فهرست خودآزمایی فصل اول ٨ فعالیت ١ ٣ ٢ اولین برنامه به زبان #C 18 ٤ ٢ الگوی یک برنامه ساده به زبان #C 18

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "فهرست خودآزمایی فصل اول ٨ فعالیت ١ ٣ ٢ اولین برنامه به زبان #C 18 ٤ ٢ الگوی یک برنامه ساده به زبان #C 18"

Transcript

1

2 فهرست اول آشنایی با مفاهیم پایهای پردازش دادهها ١ ١ دادهها و اطالعات ١ 2 1 انواع زبانهای برنامهنویسی ٥ خودآزمایی فصل اول ٨ فعالیت ١ آشنایی با زبان #C دوم 12 ١ ٢ آشنایی با زبان #C 14 ٢ ٢ شروع برنامهنویسی 15 ٣ ٢ اولین برنامه به زبان #C 18 ٤ ٢ الگوی یک برنامه ساده به زبان #C 18 ٥ ٢ کالس )Class( چیست 19 ١ ٥ ٢ نحوه تعریف کالس 19 ٦ ٢ متد چیست 2 ١ ٦ ٢ استفاده از متدهای آماده 38 خودآزمایی فصل دوم 38 تمرین

3 سوم آشنایی با ویژوال استودیو 41 ١ ٣ آشنایی با برنامه ویژوال استودیو 43 ٢ ٣ ایجاد یک پروژه جدید در ویژوال استودیو 46 ٣ ٣ معرفی بخشهای اصلی ویژوال استودیو 46 ١ ٣ ٣ نوار منو و نوار ابزار 46 ٢ ٣ ٣ پنجره ویرایشگر برنامه 47 ٣ ٣ ٣ پنجره لیست خطاها list( ) Error 47 ٤ ٣ ٣ پنجره Explorer( )Solution 48 ٤ ٣ برنامهنویسی در محیط ویژوال استودیو 52. ٥ ٣ ترجمه برنامه 53 ٦ ٣ اجرای برنامه 56 خودآزمایی فصل سوم 56 تمرین چهارم آشنایی با انواع داده و متغیرها 59 ١ ٤ متغیر چیست 59 ٢ ٤ روش تعریف و ایجاد متغیرها 6 ٣ ٤ نوع داده )نوع متغیر( 62 ٤ ٤ مقداردهی متغیرها 65 ٥ ٤ نشان دادن محتوای متغیرها برروی خروجی )صفحه نمایش( 67 ٦ ٤ نحوه نامگذاری متغیرها 69 ٧ ٤ کار با اعداد اعشاری 7 ١ ٧ ٤ فرم نقطه شناور 71 ٢ ٧ ٤ دقت اعداد قابل نمایش در فرم نقطه شناور 71 ٨ ٤ نوع داده منطقی با بولین bool( ) 71 ٩ ٤ نوع داده حرفی یا کاراکتری char 73 ١ ٤ نوع داده رشتهای String( ) 73 ١ ١ ٤ متغیر رشتهای 73 ٢ ١ ٤ عملیات بر روی دادهها یا متغیرهای رشتهای 76 ١١ ٤ دریافت یک رشته از طریق ورودی استاندارد 81 ١ ١١ ٤ دریافت اعداد از طریق ورودی استاندارد 85 خودآزمایی فصل چهارم 88 تمرین

4 پنجم عبارت های محاسباتی 9 ١ ٥ عبارت چیست 91 ٢ ٥ عملگرهای ریاضی یا حسابی 1 ٣ ٥ عملگرهای افزایشی و کاهشی 1 1 ٤ ٥ عملگرهای انتساب 1 3 خودآزمایی فصل پنجم 1 6 تمرین ششم دستورهای شرطی 1 9 ١ ٦ عبارت منطقی یا بولین 1 9 ٢ ٦ عملگرهای مقایسهای 111 ٣ ٦ دستور شرطی if 119 ٤ ٦ دستور شرطی if-else 124 ٥ ٦ عملگرهای منطقی 13 ٦ ٦ ساختار if - else پیچیده 132 ٧ ٦ دستور Switch 137 خودآزمایی فصل ششم 139 تمرین هفتم دستورات تکرار )حلقه ها( 141 ١ ٧ دستورات تکرار شرطی 142 ١ ١ ٧ دستور حلقه شرطی while 147 ٢ ١ ٧ دستور حلقه شرطی do - while 153 ٢ ٧ دستور حلقه for 159 تمرین

5 فصل اول آشنایی با مفاهیم پایه ای پردازش داده ها در این فصل ابتدا مفاهیم پایه ای پردازش داده ها شامل: داده ها اطالعات و پردازش که در کتاب مبانی کامپیوتر خوانده اید یادآوری می شود و سپس در ادامه این فصل با برنامه زبان برنامه نویسی و تقسیم بندی زبان های برنامه نویسی از نظر نزدیکی به زبان محاوره ای و لزوم یادگیری یک زبان برنامه نویسی آشنا می شوید. پس از پایان این فصل انتظار می رود که فراگیر بتواند: 1 مفهوم داده اطالعات و پردازش را بیان کند و آنها را به کار بندد. 2 تعریف برنامه برنامه نویسی مترجم و انواع زبان های برنامه نویسی را از نظر سطح نزدیکی به زبان محاوره ای بیان کند. 3 در یک برنامه ورودی خروجی و پردازش را معین کند. 4 هدف از برنامه نویسی را بیان نماید دادهها و اطالعات اغلب مردم دو واژه دادهها و اطالعات را به یک معنی میدانند در صورتی که مفهوم و کاربرد این دو واژه با یکدیگر متفاوت است. دادهها مجموعهای از مقادیر در مورد یک موضوع یا شیء است که بهصورت کم ی با یک مقدار عددی و یا بهصورت کیفی نشان داده میشود. مثال آزمون درس ریاضی یک کالس نمراتی حاصل میشوند که این نمرات بهعنوان دادهها درنظر گرفته میشوند. 17/5, 14, 19, 11, 18, 1 Data & nformat on 1

6 اسامی دانش آموزان یک کالس و یا نام شهرهای استان محل سکونت شما مثال های دیگری از داده ها می باشد. در بعضی موارد نیز برای به دست آوردن داده های مربوط به یک موضوع مجبور به استفاده از لوازم و وسایل مخصوص هستیم مثال در مورد دمای محیط نیاز به استفاده از یک حسگر ١ دما هستیم که به وسیله آن اندازه دما را به دست آوریم. اندازه دمای محیط یک داده است. برای اینکه از داده ها بتوانیم بهتر استفاده کنیم الزم است بر روی آنها محاسبات و یا به طور کلی عملیاتی را انجام دهیم. نتایج حاصل از این عملیات را اطالعات می نامیم که می تواند مورد تفسیر و بررسی قرار گیرد و نتیجه بررسی آنها به دانش ختم گردد که دانش می تواند مبنای تصمیم گیری برای انجام کاری شود. مثال اگر داده ها را نمرات ریاضی یک کالس در نظر بگیریم و مجموع آنها را محاسبه و حاصل جمع را بر تعداد نمرات تقسیم کنیم خارج قسمت به دست آمده میانگین یا معدل نمرات است. از روی میانگین نمرات می توان به سطح درس ریاضی کالس پی برد. مثال اگر این میانگین کم باشد باید کالس تقویتی ریاضی برای دانش آموزان آن کالس برگزار کرد. شکل زیر رابطه بین داده ها عملیات و اطالعات را از چپ به راست نشان می دهد. اطالعات عملیات بر روی داده ها داده ها شکل 1 1 ارتباط بین داده ها عملیات و اطالعات با توجه به شکل 1 1 مشاهده می شود که اطالعات حاصل انجام عملیات بر روی داده ها است. مجموعه محاسبات و عملیاتی که بر روی داده ها صورت می گیرد را پردازش 2 می نامند. پردازش گاهی ساده مانند محاسبه مجموع و یا خارج قسمت دو عدد می باشد و یا گاهی پیچیده مانند تشخیص شماره پالک خودرو با استفاده از عکس گرفته شده از خودرو توسط یک کامپیوتر است. نکته داده ها مقادیر خام و اولیه در مورد یک موضوع هستند. اطالعات نتایج حاصل از عملیات و محاسبات بر روی داده ها می باشد. مجموعه محاسبات و عملیاتی که بر روی داده ها صورت می گیرد را پردازش می نامند. کامپیوتر پردازشگر داده ها است. Sensor ١ Process 2 2

7 در فرایند رسیدن از داده ها به اطالعات نکات زیر باید رعایت گردد: 1 صحت داده ها: یعنی داده ها به درستی گردآوری شده باشند و داده اشتباه در بین آنها وجود نداشته باشد. مثال در بین نمرات درس ریاضی نمره منفی )کمتر از صفر( و یا باالتر از بیست نداشته باشیم و همچنین تعداد نمرات با تعداد دانش آموزان برابر باشد. و یا در مورد اندازه درجه حرارت محیط سنسور دما به خوبی کار کند و معیوب نباشد و دمای محیط به درستی اندازه گیری شود. 2 درستی انجام محاسبات: یعنی محاسبات و یا به طور کلی عملیاتی که بر روی داده ها صورت می گیرد با دقت و بدون اشتباه انجام شوند و در حین انجام عملیات لطمه ای به داده ها وارد نشود. 3 روش انجام پردازش: با توجه به هدفی که از گردآوری داده ها در نظر داریم باید پردازش مناسب نیز بر روی آنها انجام دهیم تا به اطالعات مفید برسیم. استفاده از روش های بهینه و الگوریتم های مناسب در عمل پردازش توصیه می شود. معموال از کامپیوتر برای انجام پردازش بر روی داده ها استفاده می کنیم چون سرعت کامپیوتر در اجرای عملیات و دقت انجام محاسبات باال است. همچنین از کامپیوتر برای ذخیره و نگهداری داده ها استفاده می شود تا بعدا پردازش بر روی آنها صورت گیرد. برای مطالعه در پیرامون ما دستگاه های مختلفی قرار دارند که در هر یک از آنها میکروکامپیوتری برای پردازش داده ها وجود دارد. مثال در یک دستگاه DVD Player استفاده از لیزر و حسگر عالمت های روی دی وی دی به عنوان داده ها خوانده شده و سپس با پردازش بر روی آنها تبدیل به صدا می شوند و به بلندگو فرستاده می شوند که برای ما قابل شنیدن و با معنی می باشد. در داخل خودروهای امروزی حداقل یک سیستم کامپیوتری وجود دارد که برای کنترل اندازه تحویل سوخت به موتور به کار می رود. داده های ورودی این کامپیوتر توسط حسگرهای مختلفی که برای اندازه گیری مقدار اکسیژن در هوا اندازه دمای هوا و اندازه سرعت موتور و غیره تعبیه شده اند تأمین می شود و کامپیوتر پس از پردازش داده های دریافتی و مقایسه آنها با داده های ثابت موجود در حافظه فقط خواندنی )EPROM( می تواند اندازه سوخت و ترکیب آن با هوا را کنترل نماید و از طریق تزریق سوخت )انژکتور( به موتور بفرستد. سیستم کامپیوتری مربوطه را Unit) ECU (Engine Control می نامند. تصور کنید که اگر سنسورها دچار اشکال شوند چه اتفاقی می افتد! 3

8 کنجکاوی وسایلی که در منزل شما قرار دارد و فکر می کنید که احیانا در آنها یک سیستم کامپیوتری کوچک قرار دارد را شناسایی کنید و تشخیص دهید که داده های ورودی آن دستگاه چیست و خروجی آن دستگاه کدام است. نتایج تحقیق را به کالس ارایه دهید. برای اینکه کامپیوتر بداند که چه پردازشی و یا چه عملیاتی را باید بر روی داده ها انجام دهد الزم است دستورات مناسب به آن داده شود. به مجموعه دستوراتی که به کامپیوتر می فهماند که چه نوع پردازشی را بر روی داده ها انجام دهد و همچنین اطالعات به دست آمده را چگونه نمایش دهد برنامه 1 می گویند. دستورات برنامه باید با یک زبان قابل فهم برای کامپیوتر نوشته شود و با توجه به اینکه سخت افزار کامپیوتر بر منطق رقمی ( صفر و یک( بنا شده است لذا زبان قابل فهم کامپیوتر دنباله ای از کدهای صفر و یک است که به آن زبان ماشین 2 می گویند. مثال برای جمع دو عدد 5 و 8 دستورهای زبان ماشین در یک پردازنده شرکت اینتل 3 چنین است: با توجه به اینکه نوشتن دستورات به زبان ماشین وقت گیر و دشوار است و زبان ماشین هر پردازنده با پردازنده دیگر متفاوت است زبان های دیگری طراحی شده اند که نوشتن برنامه به آن زبان ها برای ما ساده تر از زبان ماشین است. البته پس از اینکه برنامه با زبان دیگری غیر از زبان ماشین نوشته شد با استفاده از یک مترجم 4 باید به زبان ماشین تبدیل شود تا کامپیوتر بتواند آن را بفهمد و اجرا نماید. مترجم خود نیز یک برنامه کامپیوتری می باشد که وظیفه آن ترجمه و تبدیل دستورات یک زبان سطح باال به کدهای زبان ماشین می باشد. نوشتن دستورات الزم برای کنترل نحوه کار کامپیوتر به طوری که کامپیوتر بتواند یک کار مشخص را انجام دهد را برنامه نویسی می گویند. برنامه نویس شخصی است که آشنا به دستورات یک زبان برنامه نویسی باشد و با به کارگیری صحیح و مناسب دستورات برنامه نویسی کند. Program ١ Inte 3 Mach ne Language 2 Comp er 4 4

9 نکته به مجموعه دستوراتی که به کامپیوتر می فهماند که چه نوع پردازشی را باید بر روی داده ها انجام دهد و اطالعات به دست آمده را چگونه نمایش دهد برنامه می گویند. زبان قابل فهم سخت افزار کامپیوتر زبان ماشین نام دارد و متشکل از دنباله ای از کدهای 0 و 1 است. برنامه ای که با زبانی غیر از زبان ماشین نوشته شود ابتدا باید توسط یک نرم افزار مترجم تبدیل به زبان ماشین شود و سپس برنامه ترجمه شده توسط کامپیوتر اجرا می گردد. مترجم خود یک برنامه کامپیوتری است که وظیفه آن ترجمه برنامه نوشته شده به یک زبان به کدهای زبان ماشین است. 2 1 انواع زبان های برنامه نویسی زبان های برنامه نویسی را از نظر این که تا چه اندازه به زبان محاوره ای ما نزدیک باشند به صورت زیر دسته بندی می کنند: زبان های سطح پایین : 1 زبان هایی که به زبان پردازشگر کامپیوتر )CPU( نزدیک باشد و 2 مسلما از زبان محاوره ای ما دور هستند زبان های سطح پایین نام دارند. زبان ماشین و زبان اسمبلی در گروه زبان های سطح پایین قرار دارند. زبان های سطح باال : 3 زبان برنامه نویسی که به زبان محاوره ای ما نزدیک باشد زبان سطح باال نام دارد. تاکنون صدها زبان برنامه نویسی سطح باال در دانشگاه ها و یا شرکت های کامپیوتری طراحی و ابداع شده اند ولی بعضی از آنها عمومی نشدند و مورد استقبال برنامه نویسان قرار نگرفتند و بعضی از زبان ها با آمدن زبان های جدید منسوخ شده اند. از میان زبان های رایج برنامه نویسی می توان به زبان Java VB و #C اشاره نمود. زبان های سطح میانی : 4 زبان هایی در این دسته قرار می گیرند که در آنها دستوراتی برای دسترسی راحت تر به سخت افزار پیش بینی شده باشد و همچنین به زبان عامیانه نزدیک باشند مانند زبان C. برنامه نویسان از این زبان ها برای کار با سخت افزار کامپیوتر و برنامه ریزی وسایلی که در آنها 5 Low Leve Language 1 H gh Leve Language 3 Assemb y Language 2 Med um Leve Language 4

10 پردازشگر وجود دارد استفاده می کنند. در این کتاب با یکی از زبان های برنامه نویسی به نام #C )بخوانید C( Sharp آشنا خواهید شد که یک زبان سطح باال می باشد. قبل از شروع به یادگیری زبان برنامه نویسی ممکن است این سؤال طرح شود که با توجه به وجود نرم افزارهای کاربردی 1 آماده نظیر Office آیا لزومی دارد که یک زبان برنامه نویسی را یاد بگیریم تایک نرم افزار جدید بسازیم پاسخ: نرم افزارهای کاربردی آماده برای تسهیل و انجام امور عادی و روزمره که بین 2 کاربران مشترک است طراحی شده اند و به تدریج و در طی سالیان طوالنی با توجه به بازخورد کاربران تکمیل تر شده اند. مثال برنامه صفحه گسترده 3 )ابداع شده در سال 1978( یک نرم افزار کاربردی است که افراد و شرکت های بسیار زیادی از آن برای انجام امور روزمره خود استفاده می کنند. کاربران این گونه نرم افزارها باید از قابلیت هایی که در آن نرم افزار از قبل تدارک دیده شده است استفاده کنند و نیاز خود را با استفاده از آن امکانات مرتفع نمایند. با یادگیری یک زبان برنامه نویسی این انعطاف را خواهیم داشت که یک نرم افزار کاربردی مطابق با نیاز خودطراحی و برنامه نویسی کنیم. همانطور که ممکن است به جای اینکه یک لباس آماده از فروشگاهی خریداری کنیم به سراغ یک خیاط برویم تا یک لباس کامال سفارشی 4 و مطابق با سلیقه و مدل مورد نظرما درست کند. البته طراحی و تولید یک نرم افزار کاربردی یک کار سنگین پیچیده و مستلزم صرف وقت زیادی است و به وسیله ی یک گروه از مهندسان با تخصص های مختلف طی چند مرحله انجام می شود که برنامه نویسی تنها یکی از مراحل آن است. البته نگران نباشید ما در این کتاب برنامه های کوچک و مقدماتی برای یادگیری زبان برنامه نویسی #C می نویسیم و در سال بعد شما با مراحل تولید یک نرم افزار و روش های طراحی و حل مسئله 5 آشنا خواهید شد تا بتوانید با استفاده از ابزار برنامه نویسی برنامه های کاربردی برای حل یک مشکل در یک سازمان بنویسید و آن را تجربه کنید. App cat on Software 1 Spreadsheet 3 Prob em So v ng 5 Feedback 2 Custom zed 4 6

11 نقطه نظر یک برنامه نویس: من برنامه های زیادی را نوشته ام ولی تاکنون برنامه ای بدون شناسایی و درک کامل مسئله از ابتدا ننوشته ام. حتی برای کاری که بخواهم برای دوستم مجانی انجام دهم همین روش را به کار می گیرم. شکل 2 1 نظر یک برنامه نویس 7

12 خودآزمایی فصل او ل 1 در هر یک از موارد زیر داده اطالعات و پردازش را مشخص نمایید. الف( نرم افزار تهیه کارنامه در مدارس آموزش و پرورش جمع نمرات و معدل هر دانش آموز را براساس نمراتش محاسبه و چاپ می کند. ب( در یک شرکت مهندسی حقوق دریافتی کارکنان براساس میزان حضورساعات کار در شرکت محاسبه و پس از کسر مالیات و حق بیمه پرداخت می شود و بر روی فیش چاپ می شود. ج( یک روش الکترونیکی در پرداخت عوارض خودرو در هنگام عبور از بزرگراه ها استفاده از تکنولوژی RFID 1 است. در این روش یک برچسب 2 مخصوص در روی شیشه خودرو چسبانده می شود که دارای یک کد منحصر به فرد است و اطالعات شماره پالک خودرو و کد مربوطه و همچنین میزان اعتبار پولی در هنگام خرید برچسب در کامپیوتر ثبت می شود. هر گاه خودرو بدون توقف از محل پرداخت عوارض عبور کند از طريق حس گرهای امواج راديويی کد برچسب خودرو شناسایی شده و این کد به کامپیوتر داده می شود )شکل ٣ ١ ( و در نتیجه شماره پالک خودرو و میزان اعتبار آن استخراج می شود عوارض عبور از بزرگراه از اعتبار مربوطه به صورت خودکار کسر می شود )شکل ٤ 1 (. 2 من چه سطحی از زبان برنامه نویسی هستم آنتن )فرستنده و گیرنده امواج( برچسب RFID شکل 3 1 مر حله اول ورود خودرو به گذرگاه عوارض بزرگراه شناسایی با امواج رادیوییon Frequencyo Ident f cat Rad 1 Tag 2 8

13 سیستم الکترونیکی مبدل سیگنال سیستم کنترل عوارض شکل 4 ١ مرحله دوم تشخیص اطالعات خودرو و کسر عوارض از اعتبار پولی تا کنون زبان های زیادی در سطح من تولید شده است اما تنها برخی از آنها مورد اقبال متخصصان قرار گرفته است. من به زبان محاوره ای خیلی نزدیک هستم. ٣ توضیحات ستون چپ را با اصطالح ستون سمت راست تطابق دهید. )یک مورد اضافی است.( ١ برنامه الف برنامه ای برای تبدیل کد سطح باال به کد قابل فهم برای سخت افزار ٢ برنامه نویسی ب دنباله ای از کدهای صفر و یک ٣ مترجم ج مجموعه ای از دستورالعمل ها برای پردازش داده ها ٤ زبان ماشین د نوشتن دستورات الزم برای حل یک مسئله ٥ زبان سطح باال ه زبان برنامه نویسی نزدیک به زبان محاوره ای و داده ها و ورودی های یک برنامه ٤ در یک برنامه منظور از ورودی همان و منظور از خروجی همان است. ٥ در محاسبه عبارت z x 2 y ورودی )ها( و خروجی )ها( کدامند ٦ زمان ورود و خروج کارکنان یک شرکت با عکس برداری از چهره آنان و به کمک کامپیوتر صورت می گیرد. در این روش ورودی )داده( پردازش و خروجی )اطالعات( را تعیین کنید. ٧ چرا الزم است یک زبان برنامه نویسی را یاد بگیریم 9

14 فعالیت 1 با استفاده از جستجو در اینترنت چند زبان سطح باالی متداول امروزی را پیدا کرده و آنها را نام ببرید. 2 دستگاه های الکترونیکی و یا کامپیوتری که در زندگی ما وارد شده اند و همه به آنها وابسته شده ایم مانند تلفن همراه و یا کنسول های بازی را در نظر بگیرید. با توجه به کاربرد آنها داده های ورودی به آنها و همچنین با توجه به نوع پردازش اطالعات خروجی در آنها را شناسایی کنید. 3 اگر به اتفاق پدر یا مادر به تعمیرگاه اتومبیل رفتید فرصت را از دست ندهید و از تعمیرکاران سؤال کنید که دستگاه ECU )توضیح داده شده در قسمت»آیا می دانید«( در کجای خودرو قرار دارد )در همه خودروهای امروزی حتی مانند پراید نیز وجود دارد. تعجب نکنید.( ECU و حس گرهای آن را شناسایی کنید. همچنین وقتی به منزل برگشتید با استفاده از اینترنت منظور از کلمات دیاگ و فلش کردن که توسط تعمیرکاران استفاده می شود را جستجو کرده و متوجه مفهوم آن شوید. 10

15 واژگان و اصطالحات انگلیسی فصل اول ردیف واژه انگلیسی معنی واژه به فارسی 1 Application Software 2 Assembly Language 3 Compiler 4 Customized 5 Data 6 Feedback 7 High Level Language 8 Information 9 Installation 1 Low Level Language 11 Machine Language 12 Medium Level Language 13 Problem Solving 14 Process 15 Program 16 Sensor 17 Spreadsheet 11

16 فصل دوم آشنایی با زبان #C در این فصل ابتدا مختصری در مورد پیدایش زبان #C و ارتباط آن با زبان های دیگر بیان می شود و سپس ساختار یک برنامه به زبان #C معرفی می گردد و با دو اصطالح کالس و متد به صورت مقدماتی آشنا می شوید. در ادامه این فصل روش نام گذاری پاسکال برای انتخاب نام کالس توضیح داده می شود و در انتهای فصل در قسمت کار در کارگاه اولین برنامه به زبان #C را نوشته و ترجمه و اجرای آن را تجربه خواهید کرد. پس از پایان این فصل انتظار می رود که فراگیر بتواند: 1 قالب کلی یک برنامه ساده در زبان #C را بیان کند. 2 نحوه تعریف یک کالس و متد را در یک برنامه ساده بکار بندد. 3 با استفاده از یک ویرایشگر برنامه ی ساده بنویسد و آن را ذخیره نماید. 4 برنامه ذخیره شده را با استفاده از مترجم در پنجره کنسول ترجمه کرده و سپس اجرا نماید. 5 با استفاده از متدهای مربوط به رنگ تغییری در خروجی برنامه ی خود به وجود آورد. 1 2 آشنایی با زبان #C زبان #C یک زبان سطح باال شی گرا 1 و همه منظوره است که به وسیله شرکت مایکروسافت هم زمان با پیدایش الیه نرم افزاری جدید آن به نام.NET ابداع و توسعه پیدا کرده است. از نرم افزارهای متنوع و گوناگونی از جمله نرم افزارهای اداری و برنامه های کاربردی تحت وب گرفته تا نرم افزارهایی برای تلفن همراه و بازی های کامپیوتری با زبان #C و با استفاده از الیه.NET تولید می شود. زبان #C شباهت زیادی به زبان های C و Java دارد و ویژگی هایی را از آنها تقلید کرده یا بعضی Object Or ented Language 1 12

17 امکانات آنها را بهبود داده است. تالش شده است که بهترین ویژگی ها گردآوری شود اما بر خالف زبان جاوا که متن باز 1 است #C در انحصار و اختیار سازنده آن یعنی شرکت مایکروسافت است. زبان های Cو Java هر دو به زبان C برمی گردند که در سال 1970 ابداع شد و معروفیت آن به دلیل نوشتن سیستم عامل UNIX به وسیله آن بود. زبان C یک زبان حرفه ای است که دست برنامه نویس را برای نوشتن برنامه و دسترسی به سخت افزار باز می گذارد و دارای انعطاف بسیار زیادی است به همین دلیل کمتر اشتباهات منطقی برنامه نویس را کنترل می نماید. اما در زبان #C در هنگام ترجمه و همچنین اجرای برنامه دقت زیادی بر روی تطبیق و به کارگیری داده ها صورت می گیرد تا از اشتباهات دستوری برنامه نویس یا کاربر جلوگیری نماید. BJARNE STROUSTRUP برای مطالعه DENNIS M.RITCHIE دنیس ریچی متولد 1941 زبان C را بر مبنای زبان B طی سال های 1969 تا 1973 طراحی کرد و همچنین با آقای Ken Thompson که طراح زبان B بود در طراحی و ایجاد سیستم عامل یونیکس همکاری کرد. وی در سال 2011 در اثر بیماری فوت کرد. بیارنه استراس تروپ زبان C را بر مبنای C و با اضافه کردن ویژگی شی گرایی در سال 1979 طراحی کرد و در سال 1983 این زبان به نام C منتشر شد. ANDERS HEJLSBERG JAMES ARTHUR GOSLING جیمز آرترگاسلینگ متولد سال 1955 به عنو ن پدر زبان جاو شناخته می شود. وی در سال 1994 به همر ه تیمش زبان جاو ر بر پایه زبان C و C بد ع کرد وی در بتد نام Oak که نام درختی در جلوی دفتر کار و بود بر ی ین زبان نتخاب کرد ما بعدها به Java تغییر نام پید کرد. زبان جاو با هدف ساده کردن و باالبردن منیت و با شعار برنامه ر یک بار بنویس و هر جا جر کن طر حی شده ست. اندرس هجلزبرگ مهندس نرم افزارمتولد سال 1960 است وی در ساخت و ابداع چندین زبان برنامه نویسی معروف و موفق همکاری داشته است.او سازنده اصلی زبان توربوپاسکال و دلفی بود و همچنین مدیر تیم طراحی زبان #C است. شکل ١ ٢ پدید آورندگان زبان های برنامه نویسی #C C, C,Java, 13 Open Source ١

18 برای مطالعه الیه نرم افزاری.NET Framework شرکت مایکروسافت این الیه نرم افزاری دارای نسخه های مختلفی می باشد و همراه با نسخه های ویندوز منتشر می شود آخرین نسخه آن را می توانید از سایت شرکت مایکروسافت دانلود کنید. در حال حاضر )فروردین 1393( نسخه 4.5 ارائه شده است. این الیه شامل موارد زیر است: زبان های برنامه نویسی.NET مانند #C #F #J و VB محیطی برای اجرای برنامه ها ( ١ )CLR یک سری ابزارهای برنامه نویسی مانند مترجم csc که برنامه های #C را به کدهای زبان ماشین ترجمه می کند. یک سری کتابخانه های استاندارد مثل ADO.NET که برای دسترسی به بانک های اطالعاتی می باشد. زبان برنامه نویسی #C یک زبان برنامه نویسی سطح باال همه منظوره و شیء گرا است که به وسیله شرکت مایکروسافت تولید شده است. تیم طراحی این شرکت به سرپرستی آقای Anders Hejlsberg در طی تولید NET.زبان Framework #C را ابداع کرده است. نسخه های مختلف این زبان همراه با.NET عرضه شده است.نسخه #C 5.0 در 15 آگوست 2012 منتشر شده است. 2 2 شروع برنامه نویسی همان طور که برای تهیه و پخت یک غذا به مواد اولیه لوازم آشپزی و دستور پخت ٢ نیاز داریم برای تولید یک برنامه نیز به یک کامپیوتر یا لپ تاپ لوازم برنامه نویسی )یک ویرایشگر متنی 3 و یک برنامه مترجم( و همچنین به یک الگوریتم نیاز داریم. اگر یک کامپیوتر با سیستم عامل ویندوز 7 یا باالتر در دسترس باشد تقریبا تمام مواد اولیه و لوازم مورد نیاز را در اختیار داریم. Common Language Runt me ١ Text Ed tor 3 Rec pe 2 14

19 در این صورت با طی مراحل زیر می توانیم برنامه ای را نوشته ترجمه کرده و سپس اجرا نماییم. 1 نوشتن برنامه و ذخیره آن با استفاده از یک ویرایشگرمانند برنامه Notepad ویندوز 2 ترجمه برنامه ذخیره شده به وسیله مترجم زبان #C به نام CSC.EXE این مترجم با نصب.NET Framework در روی کامپیوتر قرار می گیرد )در پیوست 2 نحوه نصب آن توضیح داده شده است(. 3 اجرای برنامه ترجمه شده نمودار 1 2 این مراحل را به ترتیب از چپ به راست نشان می دهد. 3 اجرای برنامه 2 ترجمه برنامه با یک مترجم CSC.EXE 1 نوشتن برنامه با یک ویرایشگر مانند Notepad.EXE نمودار 1 2 مراحل برنامه نویسی ترجمه و اجرا در انتهای این فصل در قسمت کار در کارگاه تمام مراحل باال را به صورت عملی تجربه خواهید کرد. 3 2 اولین برنامه به زبان #C با یک برنامه ساده به زبان #C آشنا می شویم. برنامه 1 2 را در زیرمشاهده کنید. class WelcomeToCSharp { static void Main( ) { System.Console.WriteLine(''Welcome To C#!''); } } برنامه 1 2 اولین برنامه به زبان #C این برنامه کوچک فقط یک پیام خوشامدگویی بر روی صفحه نمایش نشان می دهد. رنگ های کلمات که در این برنامه مشاهده می کنید تنها برای کمک به واضح شدن برنامه برای خواننده به کار 15

20 گرفته شده است و تاثیری بر روی صفحه نمایش ندارد. همان طور که در برنامه Notepad آنچه که می نویسید همگی با یک رنگ نوشته می شود. سؤال: آیا با مشاهده این برنامه و بدون اطالعات قبلی و یا کمک از دیگران می توانید حدس بزنید که چه پیامی بر روی صفحه نشان داده می شود برای این که با این برنامه آشنا شویم و یاد بگیریم که چگونه باید به زبان #C برنامه بنویسیم از دو جنبه این برنامه را بررسی خواهیم کرد : الف( نگاه جزیی تر در حد کلمات و عالمت ها ب( نگاه کلی تر در حد تقسیم بندی یک برنامه به قسمت های مختلف با نگاهی جزیی تربه برنامه 1 2 مشاهده می کنید که این برنامه از تعدادی کلمه و عالمت تشکیل شده است. بعضی از کلمات مانند voidوclass static کلمات شناخته شده برای زبان #C هستند و دارای معنی و مفهوم ثابتی هستند به این نوع کلمات کلمات کلیدی یا رزرو شده گفته می شود. کلمات رزرو شده ١ به رنگ آبی در این کتاب نوشته شده اند و به تدریج با آنها آشنا می شوید. بعضی از کلمات دیگر مانند WelcomeToCSharp نامی است که به وسیله برنامه نویس و طبق سلیقه وی انتخاب می شود. به این نام ها شناسه 2 می گویند. برنامه نویس در انتخاب شناسه ها باید ضوابطی را رعایت کند که در فصل چهارم با آن آشنا می شوید. عالمت هایی مانند { } ( ( و نیز در این برنامه دیده می شود که معموال برای شروع یا پایان یک قسمت استفاده می گردد. با نگاهی دیگر و کلی تر به برنامه 1 2 مشاهده می کنیم که یک برنامه ساده از یک قسمت کلی به نام کالس تشکیل شده است که با کلمه کلیدی class مشخص می شود و شروع و پایان آن با عالمت آکوالد باز و بسته تعیین می گردد. در جلوی کلمه کلیدی class یک نام )شناسه( دلخواه مثال WelcomeToCSharp نوشته می شود که بیان کننده کار برنامه است. قسمت کالس برنامه را در شکل زیر مشاهده کنید. class WelcomeToCSharp { } Reserved words ١ کالس برنامه 1 2 Ident f er 2 16

21 اگر درون کالس WelcomeToCSharp را نگاه کنیم یک قسمت دیگر را خواهیم دید که چنین شروع شده است : static void Main( ) شروع و پایان این قسمت نیز با عالمت های آکوالد باز و بسته مشخص شده است. به این قسمت متد Main 1 می گوییم که بدنه اجرایی برنامه است هر دستوری که در این قسمت نوشته شود به وسیله ی کامپیوتر به ترتیب اجرا می شود. دستورهای برنامه خود را در این قسمت می نویسیم. static void Main() { System.Console.WriteLine(''Welcome To C#!''); } متد Main برنامه 1 2 آخرین قسمتی که در برنامه 1 2 در داخل متد Main قابل تشخیص است یک دستور اجرایی است و به کامپیوتر اعالم می کند که چه باید انجام دهد که در این برنامه نمایش یک پیام است: System.Console.WriteLine('' Welcome To C#!''); با اجرای دستورباال پیام خوشامدگویی!#C Welcomeبر to روی صفحه نمایش نشان داده می شود. آیا شما قبال درست حدس زده بودید که برنامه 1 2 چه پیامی را بر روی صفحه نمایش نشان می دهد! به وسیله دستور باال هر آنچه که داخل عالمت های نقل قول '' '' قرار داشته باشد بر روی صفحه نمایش نشان داده می شود حتی اگر به زبانی غیر از انگلیسی مثال فارسی نوشته شده باشد. توجه داشته باشید که خود عالمت های نقل قول بر روی صفحه نمایش نشان داده نمی شوند. بلکه این عالمت ها برای مشخص کردن شروع و پایان عبارتی است که می خواهیم روی صفحه نشان داده شود. 17 Method 1

22 نکته توجه داشته باشید که زبان #C مانند زبانهای C C و Java نسبت به حروف کوچک و بزرگ حساس است و چنانچه قصد دارید برنامهای را در کامپیوتر وارد کنید به دیکته و نوع حروف کوچک و بزرگ کلمات توجه داشته باشید. مثال کلمات static و void باید با حروف کوچک نوشته شود ولی حرف اول کلمه Main باید حرف بزرگ )M( باشد. 4 2 الگوی یک برنامه ساده به زبان #C یک برنامه کاربردی نوشته شده به زبان #C شامل مجموعه ای از کالس ها است که هر یک از آنها نیز شامل تعدادی متد هستند. اما در یک برنامه ساده مانند برنامه 1 2 تنها یک کالس وجود دارد که در آن نیز فقط یک متد به نام ) Main( تعریف می شود که نقطه آغاز اجرای برنامه است و الگوریتم خود را با رعایت قوانین زبان #C در آن می نویسیم. الگو یا ساختارکلی یک برنامه ساده به زبان #C در زیر آمده است. الگوی زیر را به خاطر بسپارید. یک نام دلخواه class { static void Main() { دستورات مربوط به انجام یک کار } } الگوی یک برنامه ساده به زبان #C کالس )class( چیست کالس یک مفهوم اساسی در برنامه نویسی شی گرا است که در کتاب برنامه سازی 2 به تفصیل بحث می شود. در اینجا اگر بخواهیم به طور ساده در مورد معنی و مفهوم کالس صحبت کنیم باید بگوییم که کالس به عنوان یک قالب یا الگویی می باشد که در آن داده هایی تعریف می شود. این داده ها

23 مربوط به یک موضوع است و عملیاتی که می توان بر روی آنها انجام داد. در زبان #C گنجینه ای از کالس های مختلف و کاربردی از قبل تعریف شده و آماده وجود دارد که برنامه نویس کافی است آنها را بشناسد و در برنامه استفاده نماید. Console یک کالس آماده در زبان #C است که عملیات مختلف ورودی و یا خروجی )بر روی صفحه نمایش و یا صفحه کلید( در آن تعریف شده است نحوه تعریف کالس: در زبان #C این امکان برای برنامه نویس فراهم است که کالس جدیدی را تعریف کند.همان طور که در زیرمشاهده می کنید از کلمه کلیدی class برای تعریف و مشخص کردن یک کالس جدید استفاده می شود. در جلوی کلمه class یک نام دلخواه ذکر می گردد که نام کالس است. مانند WelcomeToCSharp الگوی یک کالس نام کالس class { تعریف داده ها و عملیات بر روی آنها } نکته نام گذاری کالس: نام یک کالس به وسیله برنامه نویس نام گذاری می شود. سعی کنید یک نام با معنی و مطابق با کار برنامه انتخاب کنید. ممکن است این نام از چند کلمه تشکیل شده باشد. بین کلمات نباید فاصله بگذارید ولی برای این که خواندن نام به راحتی انجام شود و تشخیص کلمات آسان باشد از روش پاسکال استفاده کنید که در آن اولین حرف هر کلمه با حرف بزرگ نوشته می شود. 6 2 متد چیست همان طور که گفته شد در داخل کالس عملیات بر روی داده ها و یا الگوریتم انجام یک کار تعریف می شود. متد مجموعهای از دستورات است که برای انجام یک کار الزم است. هر متد مطابق با عملکردش نام گذاری می شود و همچنین دارای یک جفت پرانتز باز و بسته است که در آن ممکن است ورودی هایی ذکر شود که برای انجام کار الزم است. 19

24 در برنامه های زبان #C ممکن است متدهای زیادی تعریف و یا مورد استفاده قرارگیرند اما حتما باید متدی به نام Main() تعریف شده باشد که نقطه آغاز اجرای برنامه است و اجرای یک برنامه از اولین دستور داخل آن شروع می شود. کلمات static و void در قالب کلی متد Main() ویژگی های متد را مشخص می کنند که در کتاب برنامه سازی 2 با آن آشنا می شوید. static void Main() { ; دستور شماره 1 ; دستور شماره 2 ; دستور شماره 3 } ادامه دستورات قالب کلی متد ) Main( در این کتاب مانند برنامه 1 2 فقط به تعریف متد Main() می پردازیم و از متدهای آماده در زبان #C استفاده خواهیم کرد استفاده از متدهای آماده: تعداد زیادی متد در کالس های آماده زبان #C مانند وجود دارد که هر یک از آنها برای انجام کاری در نظر گرفته شده است. مثال متد WriteLine() از کالس Console برای نشان دادن پیام روی صفحه نمایش در نظر گرفته شده است که در برنامه 1 2 از آن استفاده کردیم: System.Console.WriteLine('' Welcome To C#!''); همان طور که برای آدرس دادن منزل خود به دیگران نام منطقه خیابان کوچه و شماره پالک را ذکر می کنید برای استفاده از یک متد نیز باید نام فضا یا حوزه نام کالس و سپس نام متد را مشخص کنید و برای جدا کردن آنها از یکدیگر عالمت نقطه بین آنها بنویسید )نمودار ٢ ٢ (. 20

25 .. نام حوزه System نام کالس Console نام متد WriteLine( ) نمودار 2 2 طریقه استفاده از یک متد ne( )System.Conso e.wr tel به این ترتیب برای استفاده از متد WriteLine() در برنامه 1 2 مشاهده می کنید که فضای نامی System 1 و نام کالس Console و در آخر نام متد نوشته شده است که با عالمت نقطه از یکدیگر جدا شده اند.متدهای دیگری نیز در کالس Console وجود دارد که در این فصل با برخی از آنها آشنا می شوید. برنامه زیر برای نمایش دو پیام بر روی صفحه نوشته شده است: class WelcomeToCSharp { static void Main() { System.Console.WriteLine(''Welcome To C#!''); // Insert a blank line System.Console.WriteLine(); System.Console.WriteLine(''This is my first program.''); } } برنامه 2 2 استفاده از توضیحات در متن برنامه برنامه 2 2 مانند برنامه 1 2 است با این تفاوت که سه خط دیگر به متد Main() اضافه شده است. خط اول فقط یک توضیح 2 برای خواننده برنامه و یا برنامه نویسان می باشد و توضیح می دهد که خط بعدی برنامه چه عملی را انجام می دهد. نشانه توضیحات عالمت // )دو بار کلید /( است و مترجم با دیدن این عالمت متوجه می شود که این خط یک توضیح است بنابراین آن را به زبان ماشین ترجمه نمی کند. 21 NameSpace 1 Comment 2

26 خط دوم یک دستور اجرایی است: System.Console.WriteLine(); در این خط از متد ) ( WriteLine استفاده شده است با این تفاوت که داخل پرانتز خالی است. اجرای این دستور سبب میشود که روی صفحه نمایش یک سطر خالی ایجاد شود. دستور آخر پیام program. This is my first را روی صفحه نمایش نشان میدهد. با توجه به برنامه 2 2 پیامی را که میخواهید نمایش داده شود باید بین عالمت های نقل قول " " قرار دهید. برای مثال اگر اسم شما Mohammad است و بخواهید روی صفحه نشان داده شود باید بهصورت زیر بنویسید: System.Console.WriteLine ('' Mohammad''); اگر بخواهید نام و نام خانوادگی خود را در دو سطر نمایش دهید در اینصورت میتوانید دو بار از متد WriteLine)( استفاده کنید. مثال برای نمایش Mohammad'' '' و '' ''Ghasemi چنین مینویسیم: System.Console.WriteLine('' Mohammad''); System.Console.WriteLine(''Ghasemi''); حروف عالمتها و عبارتی که ما بین عالمتهای نقل قول نوشته میشود را رشته 1 مینامند. این حروف میتواند فارسی انگلیسی یا به هر زبانی باشد. مانند نام ''Mohammad'' و یا یک رمز عبور.''Mehran2014'' هر یک از حروف و عالمتها را نیز یک کاراکتر 2 مینامند. برای مثال Mohammad از 8 کاراکتر و رمز عبور Mehran2014 از 10 کاراکتر تشکیل شده است. چنانچه فاصله در رشته وجود داشته باشد فاصله نیز یک کاراکتر محسوب میشود. نکته برای درج توضیحات در برنامه اگر یک خط باشد از عالمت // و چنانچه چند خط باشد از عالمت / توضیحات / استفاده کنید: // Display a greeting message / : Date FileName: welcome.cs... / Str ng 1 Display a greeting message Character 2 22

27 برای مطالعه زبان برنامه ویسی #C از الیه نرم افزاری.NET استفاده می کند و مایکروسافت. NET را برای ویندوز طراحی کرده و به این ترتیب روی ویندوز کار می کند و اگر کسی بخواهد بر روی سیستم عامل دیگری برنامه #C را اجرا کند باید الیه نرم افزاری مطابق با.NET را بر روی آن سیستم داشته باشد. خوشبختانه برنامه هایی مانند Mono وجود دارند که بر روی سیستم عامل های دیگری غیر از ویندوز نیز نصب می شود و دارای مترجم #C می باشد و به این وسیله برنامه های نوشته شده به این زبان را بر روی سیستم های دیگر غیر از ویندوز می توان ترجمه و اجرا کرد. برنامه Mono برای سیستم عامل های زیر وجود دارد: Android, BSD, ios, Linux, OS X, Windows, Solaris and UNIX سری به سایت Mono بزنید. mono.com شکل 2 2 برنامه نویسی #C بر روی سیستم عامل غیر از ویندوز 23

28 کار در کارگاه: برنامه نویسی به زبان #C قدم اول: نوشتن و تایپ برنامه: برای نوشتن یک برنامه ساده مانند برنامه 1 2 که در این فصل مورد بررسی قرار گرفت نیاز به یک ویرایشگر متنی 1 است. یک ویرایشگر متنی قادر است حروف کلمات و آنچه را که تایپ می کنید بدون در نظر گرفتن اطالعات نوع فونت اندازه حروف و رنگ در یک فایل ذخیره کند. برنامه Notepad یک ویرایشگر ساده است که همراه با سیستم عامل ویندوز در روی کامپیوتر نصب می شود. عالوه بر برنامه Notepad می توانیم از ویرایشگر دیگری مانند برنامه Notepad که به صورت رایگان از طریق سایت 2 آن قابل دانلود است استفاده نماییم. این ویرایشگر به منظور برنامه نویسی به زبان های مختلف طراحی شده است به طوری که کلمات رزرو شده رشته ها و توضیحات در این ویرایشگر با رنگ های مختلف نشان داده می شود )شکل 3 ٢ (. البته برای استفاده از این ویژگی باید ابتدا از منوی Language زبان برنامه نویسی موردنظر خود را #C انتخاب کنید. شکل 3 2 تصویری از محیط ویرایشگر Notepad Text Ed tor 1 p us p us.org 2 24

29 توجه داشته باشید که از برنامه Word استفاده نکنید که در این صورت کدهای اضافی مربوط به صفحهبندی رنگ و فونت را نیز به فایل شما اضافه می کند که مترجم در هنگام ترجمه برنامه انتظار آنها را ندارد و دچار مشکل می شود. در هنگام تایپ دستورات صرفنظر از این که از چه ویرایشگری Notepad( )Notepad, استفاده می کنید باید دقت داشته باشید که زبان #C نسبت به حروف کوچک و بزرگ حساس است بنابراین برنامه را دقیقا مانند کتاب تایپ کنید )شکل ٤ ٢ (. پس از آن که برنامه 1 2 را تایپ کردیم باید آن را ذخیره نماییم. برای این منظور به منوی File بروید و گزینه As Save را انتخاب کنید. در هنگام ذخیره فایل دقت کنید که فایل را در کجا و در چه مسیری ذخیره می نمایید و نام فایل مناسبی را برای آن انتخاب کنید و پسوند آن را.cs قرار دهید )شاید بهتر باشد یک پوشه در یکی از درایوها به نام خودتان بسازید و فایل را در آن ذخیره کنید(. در این تمرین نام فایل را welcome.cs قراردهید. به حروف کوچک و بزرگ توجه داشته باشید. شکل 4 2 تصویری از محیط ویرایشگر Notepad 25

30 قدم دوم: ترجمه و اجرای برنامه: پس از نوشتن و ذخیره کردن برنامه الزم است ابتدا برنامه را ترجمه کنیم و اگر اشکالی در تایپ آن وجود دارد آن را برطرف کنیم. برای ترجمه برنامه مراحل زیر را دنبال کنید. 1 از طریق گزینه Run فرمان cmd را اجرا کنید تا وارد پنجره فرمان شویم )شکل 5 ٢ (. شکل 5 2 فرمان cmd 2 پنجره فرمان ظاهر می شود )نوشته ها در شکل ممکن است با آنچه در پنجره command prompt کامپیوتر شما دیده می شود متفاوت باشد( )شکل 6 ٢ (. شکل 6 2 پنجره command prompt 26

31 3 در پنجره Command Prompt از فرمان Dir استفاده می کنیم و با توجه به این که پسوند فایل cs می باشد با تایپ فرمان زیر از وجود فایل برنامه مطمئن می شویم )شکل ٧ ٢ (. اگر فایل را پیدا نکردید باید وارد پوشه ای شوید که برنامه را در آنجا ذخیره کرده اید. به این ترتیب از دستور cd برای وارد شدن به پوشه موردنظر خود استفاده کنید. شاید دستور cd.. نیز برای وقتی که می خواهید به یک پوشه باالتر بروید مفید باشد. شکل 7 2 فرمان Dir 4 اگر مرحله قبل را به درستی انجام دهید باید شکل ٨ ٢ را مشاهده کنید. شکل 8 2 مشخصات فایل برنامه 27

32 5 توجه داشته باشید اگر برنامه.Net Framework بر روی کامپیوتر شما قبال نصب شده باشد برنامه ای به نام csc.exe 1 برای ترجمه برنامه های زبان #C در اختیار دارید. پس از یافتن فایل خود با استفاده از این مترجم برنامه خود را ترجمه نمایید. در پنجره فرمان از دستور زیر استفاده کنید: csc filename.cs منظور از filename.cs نام فایل مورد نظر شما است. شکل 9 2 فرمان ترجمه برنامه 6 با اجرای دستور باال مترجم شروع به ترجمه برنامه می کند و اگر همه کارها به درستی انجام شده باشد )برنامه.NET قبال نصب شده باشد تایپ دستور csc را درست انجام داده باشید فایل csc به درستی در مسیر جستجوی سیستم عامل )path( معرفی شده باشد و برنامه هیچ خطایی نداشته باشد.( شکل ١٠ ٢ را مشاهده خواهید کرد. C Sharp Comp er ١ 28 شکل 10 2 نتیجه ترجمه برنامه

33 7 اگر در تایپ برنامه اشتباهی انجام داده باشید مترجم نمی تواند برنامه را ترجمه کند و در این صورت خطا یا خطاهای برنامه را گزارش می دهد. برای مثال اگر فراموش کرده باشید عالمت نقطه ویرگول را در انتهای دستور System.Console.WriteLine() بنویسید با ترجمه برنامه خطای شکل ٧ ٢ ظاهر می شود. شکل 11 2 پیام خطای مترجم برای ننوشتن عالمت ; در خط 7 برنامه در خط آخر این شکل مشاهده می کنید که از سمت چپ ابتدا نام فایل برنامه یعنی welcome.cs و سپس در جلوی آن دو عدد 7 و 45 نوشته شده است که مکان خطا را در برنامه نشان می دهد. عدد اول )7( شماره سطر و عدد دوم )45( شماره ستون محل خطا در برنامه است. بعد از این دو عدد کد خطا CS1002( )error و سپس توضیح آن expected( ;( ذکر شده است. شما باید توضیح خطا را با دقت بخوانید و معنی آن را درک کنید تا بتوانید اشکال برنامه را برطرف کنید. در این مثال توضیح خطا چنین است: عالمت ; فراموش شده برای برطرف کردن خطای باال الزم است برنامه را به وسیله ویرایشگر باز کنید و به سطر 7 و ستون 45 بروید و عالمت نقطه ویرگول را اضافه کنید و سپس برنامه را تحت همان نام قبلی ذخیره کنید و دوباره به پنجره فرمان بازگردید و عمل ترجمه را انجام دهید. اگر خطایی رخ نداد به مرحله بعدی بروید وگرنه باید دوباره عملیات رفع اشکال را تکرار کنید. نکته اشتباه معمول برنامه نویسان در هنگام نوشتن برنامه فراموش کردن عالمت نقطه ویرگول در انتهای دستورات است. در این صورت خطای صادره از طرف مترجم چنین است: error CS1002: ; expected 29

34 8 در صورت ترجمه موفق برنامه فایل جدیدی ساخته می شود. با دستور Dir از وجود آن مطمئن می شویم )شکل ١٢ ٢ (. شکل 12 2 جستجوی فایل ترجمه شده 9 همان طور که در شکل 13 2 مشاهده می کنید فایل جدیدی با همان نام welcome ولی با پسوند EXE ساخته شده است. شکل 13 2 لیست فایل های برنامه و ترجمه شده 10 بعد از اینکه فایل اجرایی ساخته شد می توانید برنامه را اجرا نمایید. کافی است نام آن را در پنجره فرمان بنویسید و کلید Enter را بزنید )شکل 14 2 (. 30 شکل 14 2 اجرای فایل ترجمه شده یا برنامه اجرایی

35 11 نتیجه اجرای برنامه به صورت شکل 15 ٢ خواهد بود. شکل 15 2 نتیجه اجرای برنامه تبریک می گوییم که توانستید اولین برنامه خود را به زبان #C بنویسید و آن را ترجمه و اجرا نمایید. 12 برنامه را با ویرایشگر باز کنید و یک دستور مانند شکل 16 ٢ به آن اضافه کنید. )تغییرات با رنگ تیره مشخص شده است.( برنامه را تحت همان نام قبلی ذخیره کنید و مراحل ترجمه و اجرا )مرحله 5 به بعد( را تکرار کنید. 31 شکل 16 2 اضافه کردن یک دستور به برنامه

36 13 دوباره برنامه را با ویرایشگر باز کنید و در اولین دستور به جای متد WriteLine() از متد Write() مانند شکل 17 2 استفاده کنید. شکل 17 2 استفاده از متد Write() چه تفاوتی در اجرای برنامه حاصل می شود پیام ها چگونه نشان داده شدند 14 برنامه را به حالت اولیه خود بازگردانید و یک دستور نیز به صورت شکل 18 ٢ به آن اضافه کنید. برنامه را ذخیره کنید و سپس ترجمه و اجرا نمایید. چه تغییری در خروجی ایجاد می شود 32 شکل 18 2 استفاده از متد WriteLine() برای ایجاد یک خط خالی

37 15 همان طور که در شکل ١٨ ٢ مشاهده می کنید برای هر بار استفاده ازمتد WriteLine() مجبور هستیم کلمات System و Console را ذکر کنیم. برای کوتاه کردن این دستورات می توانیم در ابتدای برنامه فضای نامی System 1 را معرفی کنیم که در آن کالس Console تعریف شده است. در این صورت می توانیم در داخل برنامه کلمه System را از ابتدای دستورات حذف کنیم. برای معرفی فضای نامی از دستور using به صورت زیر استفاده می کنیم: ; فضای نامی using برنامه قبلی را باز کرده و تغییرات زیر را اعمال کنید و آن را اجرا نمایید )شکل 19 ٢ (. شکل 19 2 استفاده از فضای نام 16 از متد WriteLine() عالوه بر نمایش یک پیام می توان نتیجه یک عبارت ریاضی را نیز نمایش داد. برنامه ای برای انجام چهار عمل اصلی بر روی دو عدد نوشته شده است )شکل 20 ٢ (. این برنامه را با توجه به نکته زیر تایپ نموده و سپس ترجمه و اجرا نمایید. و به اعداد نشان داده شده برروی صفحه توجه کنید. آیا محاسبات درست انجام شده است نکته برای این که سریع تر بتوانید این برنامه را تایپ کنید یکی از برنامه های قبلی خود را با ویرایشگر باز کنید و فقط نام کالس و دستورات داخل متد Main را تغییر دهید و سپس تحت نام جدیدی آن را ذخیره As ( )Save کنید. توضیحات برنامه می تواند به زبان فارسی نیز باشد برای توضیح بیشتر به ضمیمه 4 در انتهای کتاب مراجعه کنید.

38 شکل 20 2 برنامۀ چهار عمل اصلی 17 برنامه شکل ٢٠ ٢ را با اعداد دیگری آزمایش کنید یعنی به جای 3 و 15 اعداد دلخواه دیگری مانند 25 و 40 قرار دهید و سپس برنامه را ترجمه و اجرا نمایید. اعدادی که روی صفحه نشان داده می شوند را یادداشت کنید آیا محاسبات درست انجام شده است 18 اگر به خروجی دستور زیر توجه کنید Console.WriteLine(40 / 25); مشاهده خواهید کرد که عدد ١ چاپ می شود چون تقسیم صحیح و بدون اعشار انجام می شود. در صورتی که جواب صحیح و دقیق عدد 1 6. است. برای این که کامپیوتر را مجبور به انجام عمل تقسیم اعشاری کنیم الزم است دست کم یکی از اعداد را به صورت اعشاری بنویسیم. یعنی عدد 40 را به صورت یا عدد 25 را به صورت بنویسید. حال برنامه را در ویرایشگر باز کرده ویکی از اعداد در دستور تقسیم را به صورت اعشاری بنویسید و سپس برنامه را با همان نام قبلی ذخیره و ترجمه و اجرا نمایید. Console.WriteLine(40.0 / 25); 19 برای این که پیام ها بهتر دیده شوند می توانیم ابتدا با استفاده از متد Clear() صفحه نمایش را پاک کنیم. به این منظور برنامه را با ویرایشگر باز کنید و متد مذکور را به برنامه طبق شکل 21 2 اضافه کنید. برنامه را تحت نام فعلی ذخیره کنید و سپس ترجمه و اجرا نمایید. 34

39 شکل 21 2 استفاده از متد Clear() برای پاک کردن صفحه 20 پنجره فرمان را ببندید وارد محیط میزکار 1 شوید و با استفاده از Computer وارد پوشه ای شوید که فایل های خود را در آن ذخیره کرده اید. فایل های اجرایی )EXE( تولید شده را پیدا کنید. با دوبار کلیک بر روی آیکن آن برنامه را اجرا کنید. چه اتفاقی می افتد در یک لحظه صفحه کنسول باز شده و به سرعت بسته می شود و شما فرصت نمی کنید نتایج برنامه را مشاهده کنید. الزم است در انتهای برنامه دستوری بنویسید که کامپیوتر را به صورت موقتی متوقف کند تا شما بتوانید نتایج محاسبات را ببیند. به این منظور از متد ReadKey() استفاده می کنیم. با اجرای این متد کامپیوتر منتظر زدن کلیدی باقی می ماند. البته برای این که کاربر بداند که چرا اجرای برنامه متوقف شده است و کامپیوتر منتظر دریافت چه چیزی است یک پیام با استفاده از متد Write() روی صفحه چاپ می کنیم. شکل 22 ٢ استفاده از این متدها را نشان می دهد. برنامه چهار عمل اصلی را باز کنید و تغییرات زیر را در آن اعمال و برنامه را ترجمه و اجرا کنید. شکل 22 2 استفاده از متد Clear() برای پاک کردن صفحه 35 Desktop ١

40 با اجرای برنامه مشاهده خواهید کرد که نتایج محاسبات و پیام exit Press any key to روی صفحه نشان داده می شود و سپس کامپیوتر متوقف می شود و با زدن یک کلید برنامه پایان می یابد )شکل 23 2 (. شکل 23 2 استفاده از متد ReadKey() برای دریافت یک کلید و توقف موقتی برنامه کاربا رنگ ها: ConsoleColor جعبه رنگ 16 تایی در #C است. نام این رنگ ها در جدول 1 2 آمده است. 21 ویژگی BackgroundColor رنگ زمینه کنسول را نشان می دهد. مثال: با استفاده از جعبه رنگ ConsoleColor رنگ زمینه را آبی کنید: Console.BackgroundColor ConsoleColor.Blue ; با اجرای دستور باال تغییری در رنگ زمینه مشاهده نمی شود. برای تغییر رنگ زمینه الزم است از متد Clear کالس Console استفاده کنیم. دستور زیر را در خط بعدی بنویسید. Console.Clear( ) ; 22 ویژگی ForegroundColor رنگ قلم کنسول را نشان می دهد. مثال : کلمه IRAN را با رنگ قرمز روی صفحه بنویسید: Console.ForegroundColor ConsoleColor.Red ; Console.WriteLine("IRAN") ; 36

41 جدول 1 2 جعبۀ رنگ ConsoleColor نام رنگ در ConsoleColor نام رنگ مشکی سورمه ای سبز تیره فیروزه ای تیره قرمزتیره بنفش زرد تیره خاکستری تیره آبی سبز فیروزهای قرمز صورتی زرد سفید خاکستری نمونه رنگ Black DarkBlue DarkGreen DarkCyan DarkRed DarkMagenta DarkYellow DarkGray Blue Green Cyan Red Magenta Yellow White Gray 37

42 خودآزمایی فصل دوم ١ قالب کلی یک برنامه به زبان #C چگونه است ٢ درهر برنامه به زبان #C دست کم یک تعریف می شود که در داخل آن یک متد به نام وجود دارد که اجرای برنامه از آن نقطه آغاز می گردد. ٣ در زبان #C انتهای یک دستور با چه عالمتی مشخص می شود ٤ تحقیق کنید که در زبان های C C و Java عالمت پایان دستور چیست ٥ عالمت توضیحات در زبان #C کدام است ٦ روش قراردادی پاسکال برای نوشتن نام یک کالس چیست ٧ برای نشان دادن یک پیام یا یک عبارت بر روی صفحه نمایش از چه دستوری استفاده می کنید ٨ تفاوت بین دو متد WriteLine() و Write() را بیان کنید. ٩ با استفاده از متد WriteLine() دستور مناسبی برای ایجاد یک سطر خالی بین نوشته ها در خروجی بنویسید. ١٠ مثالی از کاربرد دستور using بیاورید. ١١ برای هر یک از خواسته های زیر دستور یا دستورات مربوطه را بنویسید: الف( نام شما در خروجی بارنگ زرد نمایش داده شود. ب( صفحه کنسول نمایش را پاک کنید. پ( اجرای برنامه تا فشردن یک کلید متوقف شود. ت( صفحه کنسول نمایش با رنگ آبی پاک شود. تمرینات برنامه نویسی فصل دوم ١ برنامه ای بنویسید که نام نام خانوادگی و نام مدرسه شما را روی صفحه نمایش دهد. 2 برنامه تمرین 1 را تغییری دهید تا اطراف نام شما یک کادر مانند شکل زیر رسم نماید مثال اگر اسم شما محمد است. روی صفحه چنین نمایش داده شود: MOHAMMAD 38

43 3 برنامهای بنویسید که حرف انگلیسی نام شما را با استفاده از عالمت نشان دهد. مثال اگر اسم شما حمید است حرف انگلیسی H را با استفاده از عالمت بهصورت زیر نشان دهد. یادآوری: هنگامیکه میخواهید برنامهای بنویسید سعی کنید از برنامهای که قبال ذخیره کردهاید استفاده کنید. برنامه را در یک ویرایشگر باز و سپس تغییرات الزم را ایجاد و ذخیره نمایید. 4 برنامهای بنویسید که تعداد روزهای عمر شما را با استفاده از ضرب سن شما در عدد 365 محاسبه روی صفحه نشان دهد. مثال اگر سن شما 16 است عبارت * را محاسبه و نمایش دهد. 365); (16 System.Console.WriteLine 5 با توجه به تمرین 4 تعداد سالهای کبیسه را نیز حساب کنید و برنامه را تغییر دهید. )راهنمایی: برای محاسبه تعداد سال کبیسه خارج قسمت سن بر عدد 4 را حساب کنید.( 6 با اجرای برنامه زیر چه عبارتی بر روی صفحه نشان داده میشود به نظر شما چه ارتباطی بین عالیم }0{ و }1{ و }2{ با اعداد 18 و 15 و وجود دارد Class SomeCalculations { Static void Main( ) { System.Console.WriteLine(''{0} {1} {2}'', 18, 15, 18 15); } } 7 تمرین زیر به زبان انگلیسی است. آن را با دقت بخوانید و برنامه خواسته شده را بنویسید. برای زیبایی خروجی از جعبه رنگ ConsoleColor استفاده نمایید. Write a program that prints a face, using text characters, hopefully better looking than this one. /////// o o ( ^ ) 39

44 واژگان و اصطالحات انگلیسی فصل دوم ردیف واژه انگلیسی معنی واژه به فارسی 1 C Sharp Compiler 2 Calculate 3 Calculation 4 Character 5 Class 6 Command Prompt 7 Comment 8 Common Language Runtime 9 Console 1 Display a greeting message 11 Expected 12 Main 13 Method 14 Namespace 15 Object Oriented Language 16 Open Source 17 Pascal case 18 Path 19 Press any key to exit 2 Reserved words 21 String 22 Text Editor 40

45 فصل سوم آشنایی با ویژوال استودیو در فصل قبلی با ساختار کلی یک برنامه #C آشنا شدید و برنامه های ساده را با استفاده از یک ویرایشگر نوشته و ذخیره کردیم. سپس فایل برنامه را از طریق پنجره فرمان 1 با استفاده از مترجم زبان #C )برنامه )csc.exe ترجمه کرده و فایل اجرایی.EXE تولید شد. در آخر فایل EXE را اجرا کردیم. این روش برای نوشتن و تولید برنامه های کوچک خوب است اما اگر برنامه ای که می نویسیم بزرگ باشد به کارگیری این روش کمی دشوار و زمان بر خواهد بود. به خصوص عیب یابی و اشکال زدایی آن بسیار وقت گیر است. در این فصل با برنامه ای آشنا خواهیم شد که همه ابزارها و لوازم مورد نیاز یک برنامه نویس در آن گردآوری شده است و کار برنامه نویسی را آسان می کند. پس از پایان این فصل انتظار می رود که فراگیر بتواند: ١ IDE را تعریف کند و برای آن مثال بیاورد. ٢ مزایای استفاده از IDE و کاربرد VS را بیان نماید. ٣ یک برنامه جدید در محیط VS از نوع کنسول ایجاد کند آن را ذخیره ترجمه و اجرا نماید آشنایی با ویژوال استودیو تایپ برنامه در یک ویرایشگر ورود به پنجره فرمان ترجمه کردن عیب یابی و اشکال زدایی برنامه همگی عملیاتی بودند که در فصل قبلی انجام دادید وکمیوقت گیر و پر زحمت بود چون از یک محیط باید وارد محیط دیگری میشدید. برای این که راحتتر بتوانیم برنامه نویسی کنیم الزم است 41 V sua Stud o Command Prompt 2 1

46 از محیطی استفاده کنیم که همه ابزارها و لوازم مورد نیاز برنامه نویسی در آن گردآوری و متمرکز شده باشد. به چنین محیط برنامه نویسی که در آن می توان تمام مراحل برنامه نویسی ترجمه اشکال یابی و سرانجام اجرا را انجام داد IDE 1 گفته می شود که به معنای محیط تولید برنامه متمرکز می باشد. یعنی همه ابزارها و امکانات الزم برای تولید برنامه در یک جا گردآوری شده است. شرکت مایکروسافت یک IDE بسیار پیشرفته برای برنامه نویسی فراهم کرده است که با کمک آن می توان راحت تر برنامه بنویسیم و ترجمه و اجرا کنیم. نام این نرم افزار ویژوال استودیو است. ویژوال استودیو یک محیط برنامه نویسی بسیار قوی برای تولید برنامه های کاربردی تحت ویندوز و بر پایه.Net Framework می باشد. ویژوال استودیو از چند زبان برنامه نویسی نظیر #C C و VB پشتیبانی می کند. در این محیط عالوه بر تایپ برنامه می توان برنامه را ترجمه عیب یابی و سرانجام اجرا کرد. الیه نرم افزاری.NET Framework 4.5 به همراه ویژوال استودیو 2012 عرضه شد است. در حال حاضر VS عرضه شده است. خوشبختانه شرکت مایکروسافت همراه با عرضه ویژوال استودیوی تجاری یک نسخه رایگان از این نرم افزار را تحت عنوان ویژوال استودیو اکسپرس 3 نیز عرضه می کند که می توانید آن را از روی سایت شرکت مایکروسافت 4 دانلود نمایید. شکل 1 3 اجرای ویژوال استودیو اکسپرس 2012 Integrated Deve opment Env ronment 1 اردیبهشت 93 2 V sua Stud o Express 3 crosoft.com/v sua stud o/down oads 4 42

47 ما در این کتاب با Visual Studio Express 2012 کار می کنیم و از این به بعد در سرتاسر کتاب از مخفف VS برای بیان کلمه ویژوال استودیو استفاده می کنیم. اگر نرم افزار VS 2012 را در اختیار ندارید می توانید از نسخه های قدیمی تر نیز استفاده کنید فقط شکل ظاهری آن ممکن است کمی متفاوت باشد. شکل 2 3 پنجره آغازین ویژوال استودیو اکسپرس ایجاد یک پروژه جدید در ویژوال استودیو با اجرای برنامه VS صفحه شروع Page( )Start مطابق با شکل 3 3 ظاهر می شود از این صفحه می توانید یک پروژه یا برنامه جدید Project ( )New بسازید و یا برنامه های قبلی خود را باز) Project )Open کنید. برای ایجاد یک برنامه جدید به زبان #C که در محیط کنسول کار می کند ابتدا روی گزینه Project ( )New در لیست سمت چپ کلیک کنید. پس از ظاهر شدن پنجره #C Visual را انتخاب کنید )شکل 3 3 مرحله 1( و در وسط صفحه بر روی گزینه Console Application کلیک کنید )شکل 3 3 مرحله 2 (. 43

48 شکل 3 3 پنجره پروژه جدید در قسمت Name باید نام پروژه را تایپ کنید که به صورت پیش فرض ConsoleAppliaction1 برای آن در نظر گرفته شده است. مناسب است نامی مطابق با هدف برنامه ای که می نویسید انتخاب کنید چون این نام به هیچ وجه گویا و روشن نیست. همان طور که درشکل 4 3 مشاهده می کنید در قسمت Location مسیر ذخیره پروژه نشان داده شده است. هنگامی که VS را نصب می کنید در داخل My Documents یک پوشه به نام Visual Studio ساخته می شود که در داخل آن نیز یک پوشه فرعی به نام Projects ایجاد می شود. در داخل این پوشه پروژه های شما به طور پیش فرض ذخیره می شود. اگر بخواهید می توانید پروژه خود را در مسیر دیگری ذخیره کنید. مسیر دلخواه خود را با کلیک بر روی دکمه Browse مشخص کنید. شکل 4 3 تعیین نام برای یک پروژه جدید 44

49 بعد از مشخص کردن محل پروژه باید نامی برای Solution name در نظر بگیرید که نام پوشه ای را معین می کند که فایل های مربوط به یک یا چند پروژه در آن نگهداری می شود. معموال نام Solution با نام پروژه یکسان انتخاب می شود. در حال حاضر چون هدف ما آشنایی با VS است نام Introduction را در قسمت Name می نویسیم و این نام برای Solution نیز انتخاب می شود. حال پس از تعیین نام ها بر روی کلید Ok کلیک کنید. در این صورت یک پوشه با نام مذکور در مسیر پیش فرض ساخته می شود. درون این پوشه چندین فایل و یک پوشه فرعی با نامی که برای پروژه انتخاب کردید )در مثال ما )Introduction ساخته می شود. پس از چند لحظه مشاهده خواهید کرد که در IDE پنجره های مختلفی نشان داده می شود و در یکی از پنجره ها صورت کلی یک برنامه #C به صورت آماده مانند شکل 5 3 نشان داده می شود. شکل 5 3 محیط تولید برنامه )IDE( و یژوال استودیو 45

50 قبل از این که به برنامه نویسی بپردازیم ابتدا به صورت مختصر با بخش های مختلف محیط IDE آشنا می شویم. 3 3 معرفی بخش های اصلی ویژوال استودیو ١ ٣ ٣ نوار منو و نوار ابزار : ١ مانند بیشتر نرم افزارها در قسمت باالی صفحه منوهای مختلف VS و در زیر آن ابزارهای پرکاربرد مطابق با شکل 6 3 دیده می شود. به تدریج با این منوها وابزارها آشنا می شوید. شکل 6 3 نوار منو و نوار ابزار محیط و یژوال استودیو 2 ٣ ٣ پنجره ویرایشگر برنامه: در شکل 7 3 پنجره ویرایشگر برنامه نشان داده شده است. در این پنجره متن برنامه نگهداری می شود و می توانید چندین برنامه را هم زمان به صورت باز داشته باشید. در برنامه نویسی این پنجره کاربرد زیاد دارد. شکل 7 3 پنجره ویرایشگر برنامه Too Bar ١ 46

51 3 ٣ ٣ پنچره لیست خطاها List( :)Error در صورتی که برنامه اشکال تایپی یا ساختاری داشته باشد خطاها و اشکاالت برنامه در این پنجره مانند شکل 8 3 لیست می شوند. پس از ترجمه برنامه باید به این پنجره نگاه کنیم تا خطاهای احتمالی برنامه را متوجه شویم. شکل 8 3 پنجره لیست خطاها 4 ٣ ٣ پنجره Explorer( :)Solution سمت راست صفحه پنجره ای قرار دارد که ساختار پروژه و تمام فایل های موجود در آن را نشان می دهد. اگر پروژه ای باز نباشد محتوای این پنجره خالی است. ما نام این پنجره را مرورگر پروژه می نامیم و به وسیله آن به تمام اجزای پروژه دسترسی داریم. شکل 9 3 پنجره Solution Explorer 47

52 اگر پنحره مرورگر پروژه باز نیست و آن را مشاهده نمی کنید از منوی View در باالی صفحه استفاده کنید. در این منو نام تمام پنجره ها در شکل 10 3 مشاهده می شود روی گزینه Solution Explorer کلیک کنید تا این پنجره دیده شود. 48 شکل 10 3 ظاهر کردن پنجره Solution Explorer 4 3 برنامه نویسی در محیط ویژوال استودیو بعد از ایجاد یک پروژه جدید و وارد شدن به محیط برنامه نویسی )IDE( اگر به پنجره کاوشگر Solution توجه کنید داخل شاخه پروژه Introduction یک فایل به نام program.cs وجود دارد. )پسوند.cs نشان دهنده برنامه به زبان C Sharp می باشد( این فایل فایل متن برنامه است و به طور خودکار تولید شده است. محتوای این فایل در پنجره ویرایشگر برنامه نشان داده شده است. نام این فایل را می توانید مطابق با عملکرد برنامه تغییر دهید و یک نام مناسب برای آن انتخاب کنید که با دیدن نام فایل به عملکرد آن پی ببرید. در این مثال می خواهیم برنامه ای بنویسیم که یک پیام خوشامدگویی مانند فصل قبل نمایش دهد بنابراین برای تغییر نام فایل Program.cs روی آن کلیک راست کرده و نام دلخواه خود مثال Welcome.cs را وارد می کنیم )شکل ١١ ٣ (.

53 شکل 11 3 تغییر نام برنامه پس از تغییر نام و زدن کلید Enter پنجره ای مانند شکل 12 3 باز می شود و سؤال می شود»آیا این تغییر نام در تمام مکان هایی که به این نام رجوع می شود نیز اعمال شود «اگر پاسخ مثبت یعنی Yes را انتخاب کنید مشاهده خواهید کرد که در متن برنامه نام کالس که قبال Program بود به Welcome تغییر نام می دهد. شکل 12 3 تغییر نام در تمام قسمت هایی که به Program رجوع می کند 49

54 حال به پنجره کد باز می گردیم همان طور که در شکل 13 3 مالحظه می کنید ساختار کلی یک برنامه به وسیله VS برای شما آماده می شود که تعدادی دستور در آن موجود ا ست. 50 شکل 13 3 پنجره ویرایشگر برنامه جدید در چند خط باالی برنامه راهنمایی هایی برای مترجم یعنی دستورات using نوشته شده است و جلوی هر کدام یک فضای نامی ذکر شده است. فضای نامی System برای شما آشنا است زیرا در فصل قبل دستور using System را در باالی برنامه نوشتیم و این کار سبب شد که استفاده و نوشتن متدهای مربوط به Console در برنامه ساده تر شود. در حال حاضر می توانید دستورات دیگر using را پاک کنید چون فعال به کالسی غیر از Console نیاز نداریم. بعد از دستورات using دستور namespace به همراه نام پروژه )Introduction( نوشته شده است و عالمت های آکوالد باز و بسته کل برنامه را دربرگرفته است. با دستور namespace یک فضای نامی جدید تعریف می شود که برای سازماندهی و دسته بندی پروژه های بزرگ مورد استفاده دارد. فعال به آن کار نداریم ولی الزم نیست آن را پاک کنید بنابراین تغییری روی آن انجام ندهید. در داخل این فضای نامی دستور class و سپس در داخل آن متد Main نوشته شده است. نام کالس Welcome است مگر این که در مرحله قبل نام برنامه را تغییر نداده باشید که در این صورت

55 نام کالس Program است. متد Main() نیز در داخل کالس دیده می شود ولی داخل پرانتزهای آن عبارت string[] args نوشته شده است. می توانید این عبارت را از داخل پرانتزها پاک کنید تا برنامه ساده تر شود همان طور که در فصل قبل داخل پرانتزها خالی بود. داخل متد Main بین آکوالدها فضا ایجاد کنید )این کار را با کلیک کردن در بین دو عالمت آکوالد و سپس با زدن کلید Enter انجام دهید( تا بتوانید دستورات مورد نظر خود را بنویسید. مثال دستورات زیر را بنویسید: Console.WriteLine(''Hello World''); Console.WriteLine(''Welcome to C#''); هنگامی که مشغول تایپ برنامه هستید باید تفاوت قابل مالحظه ای را با روش فصل قبل که برنامه را در محیط Notepad ویندوز و یا در برنامه NotePad می نوشتید احساس کنید. اوال کلمات با توجه به نوع آنها رنگی نوشته شده اند مثال کلمات کلیدی با رنگ آبی نشان داده شده اند و ضمنا در هنگام تایپ برنامه به محض نوشتن یک حرف کلمه Console لیستی از کلمات مشابه نمایش داده می شود. با تایپ چند حرف دیگر کلمه Console در لیست نشان داده می شود و در کنار آن یک توضیح مختصر دیده می شود. شکل 14 3 را مشاهده کنید. شکل 14 3 کمک در تایپ دستورات در محیط ویژوال استودیو هرگاه کلمه مورد نظر شما در لیست دیده شد و نوار آبی رنگ روی آن قرار گرفت می توانید تایپ آن کلمه را رها کنید و کلید Enter را بزنید. در این صورت کلمه به طور کامل تایپ می شود و می توانید دنباله دستور را بنویسید. این کار باعث می شود سرعت شما در تایپ برنامه به طور چشمگیری افزایش یابد. اگر در تایپ یک دستور غلط امالیی داشته باشید و یا قوانین برنامه نویسی زبان #C را رعایت نکنید در این صورت یک خط قرمز رنگ زیر کلمه یا مکانی که در آن اشتباه وجود دارد کشیده می شود و به شما یادآوری می کند که در آن مکان یک خطا وجود دارد و شما باید آن را برطرف کنید. 51

56 شکل 15 3 نشان دادن خطا در تایپ برنامه در محیط ویژوال استودیو مثال در شکل 15 3 مشاهده می کنید که یک خط قرمز در زیر عبارت World! Hello کشیده شده است. با کمی دقت متوجه می شوید که عالمت نقل قول انتهای پیام فراموش شده است! چون پیام ها به عنوان یک رشته باید بین عالمت های نقل قول قرار داشته باشند. 5 3 ترجمه برنامه بعد از نوشتن دستورات باال برای ترجمه برنامه کلید F6 را بزنید. اگر برنامه خطا داشته باشد خطاها در پنجره List Error دیده می شود. برای مثال شکل 16 3 خطاهای برنامه را در حالتی نشان می دهد که فراموش کرده اید انتهای رشته را با عالمت '' مشخص نمایید.در این شکل پنجره Error List چندخطا را نشان می دهد شکل 16 3 مراحل رفتن به محل خطا در برنامه 52

57 شاید این مسئله تا حدودی تعجب آور باشد که شما در تایپ برنامه یک عالمت نقل قول را فراموش کرده اید اما در پنجره Error List سه خطا گزارش می شود. بنابراین در ترجمه یک برنامه انتظار گزارش تعداد خطای زیاد را داشته باشید. در حالت بروز خطا باید با خواندن توضیح خطا و شماره خط برنامه که گزارش می شود اقدام به رفع اشکال برنامه کنید. همواره از خطای اول شروع کنید بنابراین در پنجره Error List روی خطای اول دابل کلیک کنید )شکل 16 3 مرحله 1( تا به طور مستقیم به پنجره ویرایشگر برنامه و محل خطای مزبور هدایت شوید )شکل 16 3 مرحله 2(. در این صورت اقدام به رفع اشکال کنید و سپس برنامه را دوباره ترجمه کنید. اگر خطایی گزارش شد باز سراغ خطای اول بروید و برنامه را تصحیح کنید. پس از رفع اشکاالت برنامه اگر دوباره عمل ترجمه را انجام دهید در پنجره خروجی )Output( پیام ترجمه بدون خطا و موفق را مانند شکل 17 3 مشاهده خواهید کرد. شکل 17 3 پنجره خروجی در حالت بدون خطا 6 3 اجرای برنامه بعد از ترجمه صحیح و بدون خطا میتوانید برنامه را اجرا کنید. برای اجرای برنامه از دکمه بر روی نوار ابزار و یا از ترکیب کلیدی Ctrl F5 استفاده کنید. با اجرای برنامه صفحه کنسول با سه پیام مانند شکل 18 3 دیده میشود. دو پیام خوش آمدگویی همانهایی هستند که شما نوشتهاید. اما پیام سوم continue Press any key to بهطور خودکار به وسیله VS در صفحه کنسول اضافه میشود تا صفحه کنسول بسته نشود و شما فرصت دیدن پیامها را داشته باشید. با زدن یک کلید دلخواه پنجره کنسول بسته میشود زیرا دستور دیگری در برنامه وجود ندارد. 53 شکل 18 3 نتیجه اجرای برنامه در صفحه کنسول

58 54 کار در کارگاه: آشنایی با محیط VS )ویژوال استودیو( در این قسمت مراحل ایجاد یک پروژه ترجمه و اجرای برنامه را تجربه خواهید کرد. ١ برنامه VS را نصب کنید. )از پیوست شماره 1 در انتهای کتاب استفاده کنید.( ٢ برنامه VS را اجرا کنید. ٣ در صفحه آغازین یک پروژه جدید بسازید. زبان #C را انتخاب و یک برنامه کاربردی جدید Console Application ایجاد کنید. )به توضیحات ابتدای این فصل مراجعه کنید.( ٤ یک نام مناسب برای پروژه انتخاب کنید. مثال Introduction ٥ با محیط IDE ویژوال استودیو آشنا شوید و پنجره هایی که در این فصل معرفی شده بودند مانند پنجره Solution Explorer را شناسایی کنید. ٦ در محیط IDE پنجره ویرایشگر برنامه را شناسایی کنید. ساختار یک برنامه باید دیده شود. ٧ وارد پنجره ویرایشگربرنامه شوید و دو خط زیر را مطابق با آنچه در درس گفته شد در داخل متد Main اضافه کنید. Console.WriteLine(''Hello World''); Console.WriteLine(''Welcome to C#''); ٨ برنامه را ترجمه و سپس اجرا کنید. ٩ عالمت نقطه ویرگول را از انتهای یکی از دستورات حذف کنید و دوباره برنامه را ترجمه کنید و به پنجره لیست خطاها دقت کنید. چند خطا گزارش شد ١٠ در پنجره لیست خطاها روی توضیح اولین خطا دوبار کلیک کنید تا به ویرایشگر برنامه و محل خطا بروید و اشکال را برطرف کنید. ١١ برنامه را ترجمه و اجرا کنید. ١٢ عالمت نقل قول قبل از حرف H در پیام World! Hello را حذف کنید و دوباره برنامه را ترجمه کنید و به پنجره لیست خطاها دقت کنید. چند خطا گزارش شد ١٣ در پنجره لیست خطاها روی توضیح اولین خطا دوبار کلیک کنید تا به ویرایشگر برنامه و محل خطا بروید و اشکال را برطرف کنید و سپس برنامه را ترجمه و اجرا کنید. ١٤ در داخل متد Main() دستورات زیر را اضافه کنید. static void Main(string[] args)

59 { Console.BackgroundColor ConsoleColor.Blue; Console.Clear(); Console.WriteLine(''Hello World!''); Console.WriteLine(''Welcome to CS''); Console.ReadKey(); } 15 متد Beep() از کالس کنسول برای ایجاد یک صدا یا صوت در برنامه استفاده میشود این متد را در پایان برنامه به صورت زیر اضافه کنید تا یک صوت به مدت یک ثانیه ایجاد کند. Console.WriteLine(''Welcome to CS''); Console.Beep(); Console.ReadKey(); اگر بخواهید مدت زمان نواختن صدا و همچنین فرکانس )زیر و بم( صدا را تغییر دهید کافی است در داخل پرانتز متد Beep() اعدادی را به ترتیب زیر بنویسید: ;)فرکانس برحسب هرتز, مدت زمان برحسب میلی ثانیه ) Console.Beep مثال برای نواختن یک صدا با فرکانس 500 هرتز به مدت 2 ثانیه )2000 میلی ثانیه( دستور زیر را مینویسیم: Console.Beep(500, 2000 ); توجه داشته باشید که مقدار فرکانس را باید در محدوده مناسبی بنویسید زیرا گوش انسان فقط قادر است اصواتی با فرکانس حدود 200 تا هرتز را خوب بشنود. صدای بم دارای فرکانس کم و صداهای ریز فرکانس باال دارند. 16 با قرار دادن اعداد مختلف به عنوان فرکانس در متد Beep() محدوده شنوایی گوش خود را آزمایش کنید. 55

60 خودآزمایی فصل سوم 1 نرم افزار Visual Studio یک... بسیار پیشرفته برای برنامه نویسی به زبان #C است. 2 IDE مخفف کلمات..... است و بیانگر یک محیط برنامه نویسی است که می توان در آن برنامه را تایپ کرد. 3 در محیط VSعالوه بر تایپ برنامه می توان برنامه را... ع یب یابی و سرانجام... کرد. 4 در محیط VS پس از ترجمه برنامه خطاهای احتمالی آن در کدام پنجره دیده می شوند 5 در پنجره Solution Explorer محیط VS چه اطالعاتی نشان داده می شود 6 برنامه نویسی در محیط ویژوال استودیو چه برتری نسبت به استفاده از یک ویرایشگر دارد 7 ترجمه برنامه در محیط VS چه برتری نسبت به پنجره فرمان و استفاده از مترجم CSC.EXE دارد 8 از چه متدی برای ایجاد یک صوت استفاده می کنید مدت زمان و فرکانس نواختن صوت را چگونه تعیین می کنید تمرینات برنامه نویسی فصل سوم )این تمرینات در محیط ویژوال استودیو انجام شود( 1 برنامه ای بنویسید که نام و نام خانوادگی و تاریخ تولد شما را به زبان فارسی نمایش دهد. 2 برنامه ای بنویسید که 3 صوت با فرکانس های 500 و 600 و 700 هرتز را هر یک به مدت نیم ثانیه پشت سرهم ایجاد کند. 3 برنامه ای بنویسید که اطالعات هر سطر جدول زیر را در یک خط نمایش دهد. نام برنامه Notepad++ Visual Studio NET Framework 3 5 DirectX آدرس سایت org com/visualstudio/downloads microsoft com/en-us/download/details aspx?id=22 microsoft com/en-us/download/details aspx?id=35 4 با استفاده از متدهای تغییر رنگ زمینه و رنگ قلم خروجی برنامه تمرین شماره 3 را به صورت دلخواه رنگی کنید. 56

61 واژگان و اصطالحات انگلیسی فصل سوم ردیف واژه انگلیسی معنی به فارسی 1 Beep 2 Command Prompt 3 Console Application 4 Integrated Development Environment 5 Introduction 6 Location 7 New Project 8 Open Project 9 Solution Name 1 Start Page 11 Toolbar 12 Visual Studio 13 Visual Studio Express 57

62 فصل چهارم آشنایی با انواع داده ها و متغیرها برنامه هایی که تاکنون نوشته ایم به نشان دادن یک پیام یا حاصل یک عبارت بر روی صفحه نمایش محدود می شد اما در برنامه های کاربردی با داده ها و مقادیر مختلف سروکار داریم و باید بر روی آن عملیاتی را انجام دهیم. بعضی از این مقادیر مانند تاریخ تولد یک شخص یا نمره یک دانش آموز از قبل مشخص نیستند. مقدار این نوع داده ها باید در هنگام اجرای برنامه ابتدا از کاربر دریافت شوند و در مکانی از حافظه کامپیوتر نگهداری شوند و در ادامه برنامه و در جریان پردازش مورد استفاده قرار گیرند. چه حافظه ای برای نگهداری داده ها در هنگام پردازش مناسب است در این فصل با متغیرها آشنا می شویم که برای نگهداری موقتی داده ها در برنامه مورد استفاده قرار می گیرند. همچنین برای نگهداری اطالعات و نمایش آنها بر روی صفحه نمایش از متغیرها استفاده می کنیم. 58 پس از پایان این فصل انتظار می رود که فراگیر بتواند: 1 متغیر را تعریف کند و انواع متغیر را در برنامه های خود به کاربندد. 2 انواع داده ها را نام ببرد و تفاوت کاربرد هر یک را توضیح دهد. 3 میزان حافظه و محدوده انواع داده ها را بیان کند. 4 متغیرها را به طور صحیح در برنامه اعالن کندو آن ها را مقداردهی نماید. 5 شکل نمایش نقطه شناور را توضیح دهد و اعداد اعشاری را در این قالب بنویسد. 6 ازمتد ReadLine() برای دریافت داده های یک برنامه از ورودی استفاده کند. 7 بر روی رشته دریافتی از ورودی تغییراتی داده و سپس نمایش دهد. 8 از متد Parse() برای تبدیل یک رشته به یک عدد استفاده کند.

63 1 4 متغیر چیست در هر کامپیوتر حافظه های مختلفی وجود دارد که هر یک برای انجام کار خاصی پیش بینی شده است. یک نوع از حافظه کامپیوتر که قادر است داده ها را نگهداری کند و به سرعت قابل دسترسی است حافظه موقتی 1 RAM است. از اطالعات درون حافظه RAM در هر لحظه می توان با اطالع شد و یا در صورت لزوم محتویات آن را تغییر داد یا مقدار جدیدی را در آن ذخیره کرد. با توجه به مطالب گفته شده الزم است در یک برنامه یک یا چند مکان )بایت( از حافظه RAM کامپیوتر برای نگهداری موقتی داده ها یا نتایج حاصل از پردازش مورد استفاده قرار گیرد. در زبان های برنامه نویسی به این مکان ها متغیر 2 گفته می شود زیرا می توان محتوای آنها را در طول اجرای برنامه تغییر داد. نکته متغیر: مکانی از حافظه RAM کامپیوتر است که برای نگهداری موقتی دادهها یا اطالعات استفاده می شود متغیر را مانند یک ظرف در نظر بگیرید. در آشپزخانه ظروف متعددی با شکل ظاهری اندازه و جنس مختلفی وجود دارد که هر یک برای نگهداری یک نوع غذا یا مایعات استفاده می شود که گنجایش آن را داشته باشد. در یک برنامه نیز برای نگهداری هر یک از داده ها با توجه به نوع و بزرگی داده باید از متغیر مناسبی استفاده کنیم که بتواند داده را نگهداری کند. 2 4 روش اعالن )تعریف( و ایجاد متغیرها قبل از اینکه بتوانید مقداری را در یک متغیر ذخیره کنید باید متغیری را ایجاد کنید که قادر باشد آن مقدار را به درستی ذخیره نماید. در هنگام ایجاد متغیر باید نوع متغیر را مشخص نمایید. در زبان #C برای ایجاد و مشخص کردن نوع متغیر از الگوی زیر استفاده می شود. ;نام متغیر نوع داده int a; دستور زیر را در نظر بگیرید: 59 Var ab e Random Access Memory 2 ١

64 در این دستورمتغیر a از نوع عدد صحیح اعالن می شود. کلمه int نوع متغیر را مشخص می کند که قادر است اعداد صحیح را در خود نگهداری کند و a نام متغیر است. نام متغیر به وسیل ه برنامه نویس انتخاب می شود که بهتر است نام و نوع آن مطابق با داده ای باشد که مقداردهی می شود. 3 4 نوع داده 1 )نوع متغیر( نوع متغیربه طور کلی 3 ویژگی را مشخص می کند : 1 گنجایش یا ظرفیت متغیر: مثال نوع int چهار بایت است. 2 نوع اطالعاتی که در متغیر می توان ذخیره کرد: مثال در متغیر نوع int فقط اعداد صحیح و بدون ممیز قابل نگهداری است. 3 چه عملیاتی را می توان بر روی آن انجام داد: مثال عملیات ریاضی معمول را می توان روی اعداد نوع int انجام داد. در زبان #C عالوه بر نوع داده int انواع دیگری از داده ها نیز دسته بندی و گروه بندی شده اند و نحوه نمایش یا نگهداری 2 آنها در حافظه و عملیاتی که می توان بر روی آنها انجام داد از قبل مشخص و تعریف شده است و برای هر دسته یا گروه از داده ها یک نام انتخاب شده است که به آن نوع داده اولیه 3 یا درون ساخته می گویند. جدول 1 4 انواع داده و مشخصات هر یک را نشان می دهد. برای مثال در جدول 1 4 نوع داده sbyte را در نظر بگیرید. این نوع داده اعداد صحیح و بدون ممیز در محدوده 128 تا 127 را شامل می شود که یک بایت حافظه را اشغال می کند و بر روی آنها می توان عملیات ریاضی را انجام داد. اگر در یک برنامه متغیری از نوع sbyte را استفاده کنیم قادر خواهیم بود به عنوان مثال عدد 78 را در آن ذخیره کنیم. اما نمی توان عدد 200 و یا عدد 1/5 را در آن نگهداری کرد. همچنین نوع داده byte اعداد صحیحی فقط در محدوده 0 تا 255 را شامل می شود که در یک بایت قرار می گیرد. در این نوع داده فقط اعداد مثبت یا بدون عالمت 4 قابل نمایش می باشند. Data Type 1 Representat on 2 Pr m t ve Data Type or Bu t In Data Type 3 Uns gnex numbers ٤ 60

65 جدول 1 4 بیشترین مقدار کمترین مقدار مقدار حافظه )بایت( کاربرد نوع داده نوع داده sbyte اعداد صحیح اعداد صحیح مثبت byte sho t 2 اعداد صحیح اعداد صحیح مثبت usho t nt 4 اعداد صحیح اعداد صحیح مثبت u nt ong u ong اعداد صحیح اعداد صحیح مثبت عددی اعداد اعشاری f oat اعداد اعشاری با doub e دقت زیاد اعداد صحیح بزرگ dec ma اعداد اعشاری با دقت بسیار زیاد boo مقدار منطقی fa se t ue char str ng یک حرف یا عالمت )کراکتر( رشته غیرعددی 2 0 کد کراکتر مطابق با سیستم Un code کد کراکتر مطابق با سیستم Un code object آدرس یک داده دستور ; age byte متغیری به نام age ایجاد می کند که این متغیر بسیار کوچک و به ظرفیت یک بایت است و می تواند یکی از اعداد صفر تا 255 را در خود ذخیره کند. اگر بخواهید چند متغیر از یک نوع را تعریف کنید کافی است بعد از ذکر نوع داده نام متغیرها را با عالمت ویرگول از یکدیگر جدا کنید. مثال برای تعریف دو متغیر برای نگهداری حداقل و حداکثر درجه حرارت از دستور زیر استفاده می کنیم: Sbyte mintemp, maxtemp ; 61

66 نکته هر نوع داده مجموعهای از مقادیر به همراه مجموعهای از عملیات را مشخص میکند. برای اعداد صحیح و بدون ممیز نوع داده های زیر استفاده می شود: sbyte,byte, short, ushort, int, uint, long, ulong و برای اعداد اعشاری می توانید از نوع داده های float و double استفاده کنید. نوع داده float برای اعداد اعشاری با دقت حداکثر 7 رقم اعشار استفاده می شود. در صورتی که ارقام عدد بیش از آن باشد عدد گرد می شود. مثال عدد 123/ به صورت عدد 123/4568 قابل نگهداری است. نوع دادهdouble برای اعداد اعشاری بسیار بزرگ و یا بسیار کوچک مانند جرم و بار الکتریکی یک الکترون و با دقت زیاد 15 رقم استفاده می شود. نکته در زبان برنامهنویسی #C قبل از اینکه بتوانید دادهای را در یک متغیر ذخیره کنید باید متغیر را ایجاد )یا اعالن( کنید و در هنگام ایجاد کردن یک متغیر باید نوع متغیر)نوع داده( را مشخص نمایید. مثال mark; float 4 4 مقداردهی متغیرها پس از تعریف یا ایجاد متغیر می توانید در آن مقداری را با توجه به نوع متغیر ذخیره کنید. توجه داشته باشید که در یک متغیر همواره فقط یک مقدار نگهداری می شود و با ذخیره کردن داده جدید در یک متغیر مقدار قبلی آن از بین می رود. مقداردهی متغیرها به چند روش صورت می گیرد. با دستور زیر مستقیما مقداری در متغیر قرار می گیرد به این دستور دستور انتساب 1 می گویند. ;مقدار = نام متغیر دستورات زیر را در نظر بگیرید: byte age ; age 16 ; متغیر age از نوع عدد صحیح اعالن شده و با عدد 16 مقداردهی شده است. Ass gnment 1 62

67 در هنگام تعریف یا ایجاد متغیر نیز می توانید آن را مستقیما مقداردهی کنید که به آن مقداردهی اولیه 1 می گویند. الگوی آن چنین است : ;مقدار = نوع داده نام متغیر byte age 16 ; بنابراین دو دستور قبل را با الگوی باال جایگزین می کنیم: نکته 1 برای مشخص کردن اعداد مثبت نیازی به قراردادن عالمت در پشت عدد نیست. 2 در بین ارقام عدد نباید ویرگول قرار دهید تا ارقام عدد دسته بندی و جدا شوند. 3 اگر عددی را بخواهید در داخل یک متغیرذخیره کنید که خارج از ظرفیت و گنجایش آن متغیر باشد مترجم متوجه آن شده و اجازه نمی دهد. مثال دستور انتساب زیر را در نظر بگیرید: byte age 256 ; با توجه به ظرفیت متغیر age که حداکثر عدد 255 است در هنگام ترجمه این دستور خطای شکل ١ ٤ ظاهر میشود که شرح آن چنین است:»مقدار ثابت 256 را نمیتواند به یک byte تبدیل شود«. شکل 1 4 خطا در انتساب عدد صحیح 256 در یک متغیر نوع byte 63 In t a ze 1

68 در یک برنامه به زبان #C میتوانید اعداد صحیح را در مبنای 16 نیز بنویسید. برای این منظور قبل از عدد مورد نظر از پیشوند 0xیا 0X استفاده کنید که نشانه اعداد مبنای 16 میباشد. مثال : byte portvalue 0x1B; ushort portaddress 0X00FF; با اجرای این دستورات در متغیر portvalue عدد 27 و در متغیر portaddress عدد 255 قرار میگیرد. 1 برای مشخص کردن انواع عددی دیگر از نشانههای جدول ٢ ٤ استفاده میشود که در انتهای عدد ذکر میشود. جدول 2 4 نشانههای نوع اعداد ثابت نوع عدد نشانه مثال عدد صحیح مثبت U یا 125U u عدد صحیح بزرگ L یا 1700L l عدد صحیح بزرگ مثبت UL UL عدد اعشاری با دقت معمولی F یا 2 5f f عدد اعشاری با دقت زیاد D یا 12 75d d عدد بسیار بزرگ M یا M m نکته اگر در برنامه یک عدد اعشاری بدون نشانه بنویسید این عدد به عنوان عدداعشاری با دقت زیاد در نظر گرفته می شود. برای ذخیره اعداد اعشاری باید ازمتغیرهای نوع float یا double استفاده کنید. مثال برای نگهداری نمرات درسی)معموال با دو رقم اعشار( یا اعداد گنگ مانند π باید از چنین متغیرهایی استفاده کرد. دستور زیر را در نظر بگیرید: double PI ; در این دستور برای نگهداری عدد π متغیر PI با دقت زیاد اعالن و مقداردهی شده است. 1. (1B) = (1*16)+11=27 (FF)=(15*16) + 15=255 64

69 نکته برای ذخیره اغلب دادهها مانند نمره یک درس متغیر نوع float مناسب است. اگر چه میتوانید از متغیر نوع double نیز استفاده کنید ولی حافظه اشغالی این متغیر دو برابر متغیر نوع float است. دستورات زیر را در نظر بگیرید: float myphysicmark; myphysicmark 17.75f; در دستورات باال برای ذخیره نمره درس فیزیک متغیری اعالن و مقداردهی شده است. سؤال: در دستور انتساب بعد از عدد اعشاری حرف f نوشته شده است که نشانه اعداد اعشاری با دقت معمولی است.آیا میتوانید حرف f را ننویسید نکته در زبان #C هر عدد اعشاری داخل برنامه به وسیله مترجم به عنوان نوع double در نظر گرفته میشود. بنابراین اگر بخواهید یک عدد ممیزی را در یک متغیر نوع float ذخیره کنید مترجم خطا یا هشدار میدهد. برای جلوگیری از این مسئله باید از متغیرهای نوع double در هنگام کار با اعداد اعشاری استفاده کنید و یا اینکه در جلوی اعداد اعشاری حرف F یا f را بنویسید تا مترجم این عدد را به عنوان یک عدد نوع float در نظر بگیرد. ٥ 4 نشان دادن محتوای متغیرها بر روی صفحه نمایش معموال در برنامهها الزم است محتوای متغیرها که شامل دادهها و یا نتایج پردازش با اطالعات بر روی صفحه نشان داده شود تا کاربر از آنها آگاه شود. بدین منظور از متد Write() یا WriteLine() استفاده میکنیم که در فصلهای قبلی برای نمایش یک پیام یا حاصل یک عبارت به کار گرفته شد. مثال برای نشان دادن محتوای متغیر age دستور زیر را مینویسیم: byte age 16 ; System.Console.WriteLine( age ); با توجه به اینکه در متغیر age عدد 16 قرار دارد با اجرای دستور باال این عدد روی صفحه کنسول نشان داده میشود. 65

70 اگر شخص دیگری غیر از شما این عدد را روی صفحه مشاهده کند شاید متوجه نشود که این عدد چیست و شاید عدد 16 را به عنوان نمره در نظر بگیرد. بنابراین بهتر است قبل از نمایش هرعدد یک پیام )رشته( نیز نشان داده شود و به صورت کوتاه و مختصر منظور و مفهوم عددی را که قرار است روی صفحه نشان داده شود بیان کند. بنابراین دستور باال را به صورت زیر مینویسیم : System.Console.WriteLine(''My age is '' age ); با اجرای این دستور عبارت زیر روی صفحه نشان داده میشود: My age is 16 در دستور باال به معنای عمل جمع ریاضی نیست بلکه به منظور کنار هم قرار دادن 1 این عالمت استفاده شده است: دو مقدار )رشتهها( استفاده شده است. همان طور که در دستور زیر نیز از عالمت System.Console.WriteLine(''I am '' age ''years old.'' ); با اجرای این دستور عبارت زیر روی صفحه نشان داده میشود: I am 16 years old. مثال 1 4 استفاده از چند متغیر صحیح و اعشاری در برنامه 1 4 نشان داده شده است: class VariableDemo { static void Main() { // Declare some integer numbers variables int a 10, b 20,c ; c a b; Console.WriteLine(''a '' a); Console.WriteLine(''b '' b ); Console.WriteLine(''a b '' c); // Declare some real numbers variables float lowpi f; double highpi ; Concatenate 1 66

71 // Print the results on the console Console.WriteLine(''Float PI is: '' lowpi); Console.WriteLine(''Double PI is: '' highpi); } } Console.ReadKey(); برنامه 1 4 تعریف و مقداردهی و نمایش محتوای متغیرها در برنامه 1 4 سه متغیر a, b, c از نوع عدد صحیح تعریف شده اند و در متغیر c نتیجه حاصل جمع دو عدد a و b قرار می گیرد. در دو متغیر اعشاری lowpi و highpi عدد π با دقت های مختلف نگهداری شده است. شکل 2 4 خروجی برنامه نحوه نام گذاری متغیرها همان طور که پدر و مادر برای انتخاب یک نام خوب و مناسب برای فرزند خود وقت زیادی می گذارند و نکاتی از جمله زیبایی نام و با معنا بودن را رعایت می کنند و همچنین سعی می کنند که این نام قبال در خانواده و یا نزدیکان انتخاب نشده باشد به همان صورت برنامه نویس نیز برای متغیرها باید یک نام صحیح بامعنا و غیرتکراری در محدوده آن را انتخاب کند این کار باید با حوصله انجام شود و نام انتخابی نباید با نام های دیگر یکسان باشد. 67

72 در زبان #C در نام گذاری متغیرها رعایت موارد زیر الزامیاست: 1 استفاده از حروف الفبا اعداد و کاراکتر زیرخط مجاز است. 2 نام متغیر نمیتواند با عدد شروع شود. 3 نام انتخابی نمیتواند با کلمات کلیدی یا رزرو شده باشد. 4 استفاده ازعالمت فاصله و خط تیره در نام متغیر مجاز نیست. در انتخاب نام متغیرها بهتر است نکات زیر رعایت شود: نام با معنی و با توجه به کاربرد متغیر در برنامه انتخاب شود. مانند woodlength از نامهای مخفف استفاده نکنید چون خواندن آنها مشکل است.مانند crntstdnt اولین حرف نام متغیر را با حروف کوچک شروع کنید و اگر نام متغیر از چند کلمه تشکیل شده برای خوانایی حرف اول کلمات بعدی را با حروف یزرگ بنویسید.به این روش نوشتن نام کوهان شتری ١ میگویند. چند نمونه نام متغیر دو کلمهای به روش کوهان شتری را مالحظه میکنید: filename, username, notfound, localip ٣ روش دیگری برای نام گذاری متغیرها به نام روش مجارستانی ٢ به وسیله آقای چارلز سیمونیی ابداع شده که در ابتدای نام متغیر مخفف نوع داده ذکر می شود که یک روش شناخته شده و معروف برای نام گذاری متغیرها است. چند نمونه نام متغیر دو کلمه ای به روش مجارستانی را مالحظه می کنید: IntNumber, LngSalary, BlnStatus در این کتاب از روش کوهان شتری برای نام گذاری متغیرها استفاده شده است. نکته با توجه به حساسیت زبان #C به حروف کوچک و بزرگ در نام گذاری متغیرها به این نکته دقت کنید که متغیر a و A مستقل هستند. Hungar an Notat on 2 Came Notat on ١ Char es S mony 3 68

73 در جدول زیر تعدادی نام متغیر و علت مجاز یا غیرمجاز بودن این نام ها را می بینید. جدول ٣ ٤ نمونه متغیرهای مجاز و غیر مجاز توضیح غیر مجاز نام متغیر نباید با عدد شروع شود مجاز غیر مجاز بین کلمات نباید فاصله وجود داشته باشد مجاز غیر مجاز عالمت تعجب نباید در نام وجود داشته باشد مجاز غیر مجاز عالمت + در یک نام نباید قرار داشته باشد مجاز مجاز غیر مجاز نام نمیتواند با عدد شروع شود نام متغیر 1a a1 employee Salary First Hello! payrate one+two Conversion counter 1 2nd در دستورات زیر چند نمونه از اعالن و مقدار دهی متغیرها را مشاهده میکنید: int speed تعریف متغیر برای نگهداری سرعت خودرو با مقداردهی اولیه // ; 70 float a, b, c ; // تعریف سه متغیر برای اضالع مثلث Triangle sides ; trianglearea float // تعریف یک متغیر برای نگهداری مساحت مثلث electricalcharge; double متغیری برای نگهداری بار الکتریکی یک جسم // ٧ 4 کار با اعداد اعشاری در فیزیک و شیمیو یا به طور کلی در علوم با اعداد بسیار کوچک و بسیار بزرگ سروکار داریم. اگر بخواهید عدد اعشاری بسیار کوچک و یا بسیار بزرگی را در یک متغیر ذخیره کنید میتوانید آن را به صورت کوتاه با روشی شبیه نماد علمیبنویسید. برای اینکه با این روش آشنا شوید ابتدا الزم است روش نماد علمیرا یادآوری کنیم. در روش نماد علمی هر عدد از 2 بخش تشکیل میشود که با عالمت ضرب از یکدیگر جدا شده اند. بخش اول یک عدد اعشاری بین 1 تا 9 است )فقط یک رقم صحیح دارد( که به آن مانتیس میگویند و قسمت دوم که به صورت توانی از عدد 10 است که به آن نما گفته میشود جدول 4 ٤ (. 69

74 جدول 4 ٤ مثال هایی از فرم نماد علمی فرم نماد علمی فرم معمولی فرم نقطه شناور: در زبان #C از یک فرم نماد علمیبرای نمایش اعداد اعشاری استفاده میشود که به آن فرم نقطه شناور 1 گفته میشود. در این فرم مانند نماد علمی عدد از دو بخش مانتیس و نما تشکیل شده است که با حرف E از یکدیگر جدا شده اند. در این فرم توان 10 بعد از حرف E نوشته میشود وخبری از عالمت ضرب بین دو قسمت نیست )جدول ٥ ٤ (. جدول 5 ٤ مثالهایی از نمایش اعداد در فرم نقطه شناور نمایش عدد در فرم نقطه شناور عدد E E E E E3 بار الکتریکی یک الکترون /602 کولن است که در متغیرهای زیر ذخیره شده است میتوانید این عدد بسیار کوچک را در یک متغیر نوع double یا floatبه صورت نقطه شناور ذخیره کنید Double electricalcharge 1.602E 19; Float electricalcharges 1.602E 19F; سؤال:کدامیک از دستورات باالرا ترجیح میدهید چرا F oat ng po nt notat on 1 70

75 2 ٧ 4 دقت اعداد قابل نمایش در فرم نقطه شناور: حداکثر تعداد ارقام غیر صفر و با معنی مانتیس عدد را دقت عدد می نامند. دقت اعداد نوع ٦ float یا 7 رقم و اعداد نوع double 15 رقم است. نکته به غیر از میزان حافظه مصرفی و محدوده اعداد قابل نمایش در نوع داده های float و dou ble میزان دقت این دو نوع داده نیز با یکدیگر متفاوت است. ٨ 4 نوع داده منطقی یا بولین )bool( 1 در انتهای جدول 1 4 نوع داده منطقی یا بولین )bool( را مشاهده میکنید این نوع داده فقط شامل دو مقدار درست )true( و نادرست )false( است. متغیرهایی که از این نوع داده تعریف و ایجاد میشوند قادرند یکی از دو مقدار true و false را بپذیرند که با حروف کوچک انگلیسی نوشته میشوند. دستورات زیر متغیر response را اعالن و با false مقدار دهی اولیه میکند. سپس محتوای متغیر بر روی صفحه نمایش چاپ میشود. bool response false; System.Console.WriteLine(response ); ٩ 4 نوع داده حرفی یا کاراکتری char کاراکترعبارت است از یک حرف الفباء یا یک عالمت و یا نشانه هایی مانند آنچه که در روی دکمه های صفحه کلید مشاهده می کنید. در کامپیوتر برای هر دکمه صفحه کلید یک کد عددی در نظر گرفته می شود و در واقع هنگامی که یک کلید را فشار می دهید کدی متناظر با آن کلید تولید و این کد به صورت دنباله ای از صفر و یک در حافظه کامپیوتر ذخیره می شود. یک کاراکتر را می توانید با کد آن مشخص کنید و یا عالمت آن را در بین عالئم ' ' )تک کوتیشن( قرار دهید. چند نمونه از کاراکترها را در زیر مشاهده می کنید. 'A', 'a', '&', '$, '+', ' ' 71 Boo ean 1

76 نکته در داخل عالمت ها فاصله )Space( نیز به عنوان یک کاراکتر در نظر گرفته می شود. در داده کاراکتری فقط یک کاراکتر باید بین عالئم ' 'وجود داشته باشد. 72 توجه داشته باشید که در زبان برنامه نویسی# C نوع داده char به منظور کار با داده های کاراکتری پیش بینی شده است. اگر بخواهید یک کاراکتر را در یک متغیر ذخیره کنید باید متغیری از نوع داده char تعریف کنید. گنجایش این متغیر دو بایت است و کد کاراکتر را نگهداری می کند. ; نام متغیر char در دستور زیر متغیری به نام ch از نوع char تعریف و حرف A در آن ذخیره شده است. char ch 'A'; متغیر ch یک متغیر دو بایتی است که در آن کد کاراکتر نگهداری می شود. این کد دو بایتی طبق استاندارد یونیکد )Unicode( است.در استاندارد یونیکد کد هر کاراکترعددی بین 0 تا است و تمام نشانه ها عالئم و حروف الفباء زبان های مختلف کشورها به وسیله این استاندارد کدبندی شده است. این کدبندی مستقل از سیستم عامل زبان برنامه نویسی و سخت افزار است. در برنامه می توانید به جای قرار دادن کاراکتر در عالئم ' ' از کد آنها استفاده کنید چون کاراکتر ها فقط محدود به آنچه که بر روی صفحه کلید قرار دارد نیستند. بنابراین با دانستن کد هر کاراکتر می توانید آن را در برنامه استفاده کنید. معموال برای سادگی این کد را در مبنای 16 ذکر می کنند. با توجه به اینکه در کدبندی یونیکد از دو بایت استفاده می شود و هر 4 بیت یک رقم مبنای 16 است برای نمایش این کد در مبنای 16 از یک عدد 4 رقمی استفاده می شود. مثال کد کاراکتر A عدد 65 در مبنای 10 است. معادل این کد در مبنای 16 عدد 41 است. این عدد را در داخل عالئم' ' قرار می دهیم و برای مشخص کردن این عدد به عنوان کد کاراکتر قبل از آن عالمت u\ یا x\ را می نویسیم مانند الگوی زیر: 'کد 4 رقمی \u ' در دستور زیر متغیر ch اعالن و حرف A در آن ذخیره می شود. از صفرهای اضافی قبل از عدد برای تکمیل کد به صورت 4 رقمی استفاده شده است. char ch '\u0041'; // Same as Char ch 'A'

77 10 4 نوع داده رشته ای )String( نوع داده char تنها برای نگهداری یک کاراکتر مناسب است. برای هنگامی که داده ها مانند نام یک شخص بیش از یک کاراکتر است باید از نوع داده رشته ای )string( استفاده کنیم. یک رشته شامل تعدادی حروف و کاراکتر است که در بین جفت کوتیشن '' '' قرار گرفته است. مثال '' Mohammad ''یک داده رشته ای شامل 8 کراکتر است متغیر رشته ای: برای نگهداری داده های رشته ای در برنامه باید متغیر رشته ای تعریف کنید. متغیرهای رشته ای قادرند آدرس محلی که یک داده رشته ای وجود دارد را نگهداری کنند یا به عبارت ساده قادرند داده های رشته ای را ذخیره کنند. بنابراین با متغیری از نوع رشته قادر خواهیم بود به داده های رشته ای دسترسی داشته باشیم. دستور زیر یک متغیر رشته ای به نام name را اعالن می کند. string name; و با دستور انتساب زیر می توانید رشته ''Mohammad'' را در متغیرname ذخیره کنید و در طول برنامه به آن دسترسی داشته باشید: name ''Mohammad''; سؤال: آیا می توانید دو دستور باال را با یک دستور جایگزین کنید عملیات بر روی داده ها یا متغیرهای رشته ای: عملیات مختلفی بر روی رشته ها می توان انجام داد یکی از عملیات معمول و کاربردی الحاق یا کنارهم قرار دادن رشته ها است. برای الحاق دو رشته از عالمت استفاده می شود. قطعه کد زیر را در نظر بگیرید. در این کدها محتوای متغیر رشته ای name با رشته ''Welcome'' الحاق شده و حاصل در متغیرmessage قرار می گیرد. string name ''Mohammad''; string message ''Welcome'' name; System.Console.WriteLine(message); نتیجه خروجی چنین خواهد بود: WelcomeMohammad سؤال: اگر بخواهید خروجی به صورت خوانا Welcome Mohammad شود یعنی بین دو کلمه یک فاصله قرار گیرد چه تغییری در دستورات باال ایجاد می کنید 73

78 نکته با توجه به این که در زبان #C عالمت هم برای عمل جمع ریاضی و هم برای الحاق رشتهها استفاده میشود در به کارگیری این عالمت در برنامه باید دقت کافی داشته باشید. کار در کارگاه ١ مثال 2 4 : برنامه زیر مانند برنامه 1 4 برای محاسبه مجموع دو عدد a و b نوشته شده است با این تفاوت که حاصل جمع در متغیری ذخیره نشده بلکه روی صفحه نمایش نشان داده می شود. به خط آخر این برنامه توجه کنید. آیا به نظر شما با اجرای این برنامه عدد 25 به عنوان حاصل جمع نشان داده می شود چرا class VariableDemo { static void Main() { // Declaretwo integer variables int a, b ; a 10 ; b 15 ; Console.WriteLine( a a); Console.WriteLine( b b ); // What is displayed? Console.WriteLine( a b a b); } } برنامه 2 4 دقت در استفاده از عالمت در هنگام کار با اعداد و رشته ها 74

79 در خط آخر برنامه 2 4 عالمت دو بار استفاده شده است که هر دو عالمت عمل الحاق رشته را انجام میدهند. خروجی این برنامه مطابق شکل 3 4 است: شکل 3 4 خروجی برنامه 2 4 برای رفع اشکال برنامه 2 4 خط آخر را به صورت زیر بازنویسی می کنیم: Console.WriteLine(''a b '' (a b) ); با تصحیح خط آخر نتیجه اجرای برنامه شکل 4 4 خواهد شد: شکل 4 4 خروجی برنامه 2 4 پس از تصحیح سؤال: با توجه به خروجی برنامه ٢ ٤ چرا پرانتز سبب تغییر مقدار خروجی شد 75

80 دریافت رشته تاکنون دادههای مشخص و ثابتی رادر داخل برنامه استفاده کردیم. این دادهها به وسیل ه برنامهنویس درون برنامه تعیین شده بود. حال میخواهیم برنامههای خود را کاربردی کنیم و دادهای را از کاربر دریافت کنیم. برای این منظور از متد ReadLine() استفاده میکنیم که به کاربر اجازه میدهد تا داده مورد نظر خود را از طریق صفحه کلید وارد کند. متد () ReadLineمانند متدهایی که تاکنون خوانده ایم در کالس Consoleتعریف شده است و در فضای نامی System قرار دارد. بنابراین بهصورت زیر استفاده میشود: System.Console.ReadLine(); کامپیوتر با اجرای این متد متوقف شده و منتظر دریافت داده میشود. کاربر میتواند داده مورد نظر خود را تایپ کند و در پایان دکمهEnter را بزند که در این صورت داده به صورت یک رشته در حافظه ذخیره میشود. اگر رشته دریافتی را با دستور انتساب در یک متغیر رشتهای ذخیره کنیم داده وارد شده در برنامه قابل دسترسی خواهد بود. برای مثال میخواهیم نام و نام خانوادگی یک شخص را از کاربر سؤال کرده و در برنامه استفاده کنیم. برای این منظور ابتدا دو متغیر رشتهای به نام name و family از نوع رشتهای اعالن میکنیم و سپس از متد ReadLine() برای دریافت نام و نام خانوادگی به صورت زیر استفاده مینماییم: string name, family; name System.Console.ReadLine(); family System.Console.ReadLine(); نکته متد ReadLine() شبیه متد ReadKey() است با این تفاوت که متد ReadKey() فقط منتظر دریافت یک کلید می شود اما در متد ReadLine() تا هنگامی که کلید Enter زده نشده است کامپیوتر منتظر می ماند. توجه داشته باشید وقتی کامپیوتر منتظر دریافت داده است کاربر باید بداند که چه داده ای را الزم است وارد کند )نام نمره سن ) بنابراین الزم است قبل از استفاده از متد ReadLine() یک دستور برای نمایش یک پیام و توضیحی کوتاه در مورد اینکه کامپیوتر منتظر دریافت چه داده ای است در برنامه نوشته شود. از متد Write() بدین منظور استفاده می کنیم.

81 مثال برای دریافت نام کاربر دستورات زیر را مینویسیم: string name ; System.Console.Write(''Enter your name:''); name System.Console.ReadLine(); کار در کارگاه 2 مثال 3 4 : نام کاربر از ورودی دریافت شده و خطاب به او پیام خوشامدگویی اعالم شود. using System; class HelloYourName { static void Main() { string name; Console.Write( Enter your name: ); name Console.ReadLine(); Console.WriteLine( Hello name); Console.Write( Press any key to exit... ); Console.ReadKey(); } } برنامه 3 4 خوشامدگویی به کاربر اگر فرض کنید که کاربر نام Ali را وارد کند خروجی برنامه به صورت شکل 5 4 خواهد بود: 77 شکل 5 4 خروجی برنامه 3 4

82 مثال 4 4 : می خواهیم به برنامه 3 4 دستوراتی اضافه کنیم که عالوه بر دریافت نام کاربر نام خانوادگی وی نیز سؤال شود و سپس نام ونام خانوادگی را در یک خط نمایش دهد. در برنامه 3 4 کافی است یک متغیر رشته ای به نام family تعریف کرده و از متد() ReadLine برای دریافت نام خانوادگی استفاده کنیم. برای نمایش نام و نام خانوادگی در یک خط نیز از عالمت برای الحاق رشته ها استفاده می کنیم )کدهای برجسته تغییرات جدید هستند(. using System; class HelloYourName { static void Main() { string name, family; Console.Write(''Enter your name:''); name Console.ReadLine(); Console.Write(''Enter your family:'' ); family Console.ReadLine(); Console.WriteLine(''Hello '' name '' '' family''); } } Console.Write(''Press any key to exit...''); Console.ReadKey(); برنامه 4 4 تکمیل برنامه خوشامدگویی به کاربر سؤال: خروجی برنامه تغییر یافته چه تفاوتی با شکل ٥ ٤ دارد 78

83 مثال 5 4 : می خواهیم برنامه ای بنویسیم که دو عدد دلخواه از کاربر دریافت کند و مجموع آن ها را حساب کرده و روی صفحه نمایش نشان دهد. برای دریافت داده ها از کاربر از متد ReadLine() مانند مثال های قبلی استفاده می کنیم. داده های دریافتی به وسیله این متد در قالب رشته در حافظه ذخیره می شوند بنابراین برای دسترسی به آن ها باید از متغیرهای رشته ای استفاده کنیم. using System ; class GetNumbers { static void Main() { string firstnumber, secondnumber; Console.Write(''Enter a number:'' ); firstnumber Console.ReadLine(); Console.Write(''Enter another number:'' ); secondnumber Console.ReadLine(); Console.WriteLine(''Total '' (firstnumber secondnumber) ); } } Console.Write( Press any key to exit... ); Console.ReadKey(); برنامه 5 4 اولین تالش برای دریافت داده های عددی با اجرای این برنامه پنجره ای ظاهر می شود که از کاربر خواسته می شود که یک عدد وارد کند )شکل 6 ٤ (. 79

84 شکل 6 4 خروجی برنامه 5 4 دریافت یک عدد پس از وارد کردن یک عدد و زدن دکمه Enter عدد دیگری خواسته می شود. فرض کنید اعداد 13 و 77 توسط کاربر وارد شود )شکل 6 ٤ (. شکل 7 4 خروجی برنامه 5 4 سؤال:کاربر با وارد کردن دو عدد 13 و 77 انتظار داشت که مجموع آنها یعنی عدد 90 روی صفحه نشان داده شود اما به جای آن عدد 1377 نشان داده شد. چرا همان طور که بیان شد متد ReadLine() داده دریافتی را به صورت یک رشته در حافظه ذخیره می کند و در برنامه 5 4 از متغیرهای رشته ای firstnumber و secondnumber برای دسترسی به داده های ورودی استفاده کردیم. بنابراین عالمت در دستور زیرعمل الحاق دو رشته مثال '' 13 ''و ''77'' را انجام می دهد و طبیعی است که نباید انتظار عمل جمع ریاضی داشته باشیم. 80

85 دریافت اعداد: با توجه به این که داده های دریافتی به وسیله متد ReadLine() همواره به صورت رشته تحویل داده می شود باید به وسیله دستوری رشته دریافتی را به عدد تبدیل کنیم. بنابراین به متدی نیاز داریم که بتواند یک رشته شامل ارقام را به ارزش عددی تبدیل کند تا بتوانیم روی آنها محاسبات ریاضی انجام دهیم. خوشبختانه برای انواع داده های عددی متدی به نام Parse() از قبل تعریف شده است که می تواند از یک رشته شامل ارقام معادل عددی آن را بدست آورد. مثال برای تجزیه رشته '' 259 ''به ارزش عددی با توجه به این که درون رشته یک عدد صحیح قرار دارد از متد Parse() مربوط به نوع داده int استفاده می کنیم: int.parse(''259''); نکته به عمل بررسی کاراکتر به کاراکتر یک رشته برای جدا کردن و بدست آوردن یک مقدار با معنی تجزیه کردن 1 می گویند. حاصل اجرای این متد عدد 259 است که باید در یک متغیر نوع صحیح ذخیره شود. بنابراین استفاده مفید از این متد به صورت زیر خواهد بود: int a ; a int.parse(''259''); میتوانید دو دستور باال را با دستور زیر جایگزین نمایید: int a int.parse(''259''); اگر رشتهای حاوی عدد اعشاری باشد باید از متد () Parseمربوط به نوع داده اعشاری مثالfloat یا double استفاده کنید.مثال برای تبدیل رشته'' 2.50 '' به عدد 2.5 از دستورات زیر استفاده میکنیم: float b ; b float.parse( 2.50 ); با استفاده از متد Parse() میتوانیم رشته دریافتی که به وسیله متد ReadLine() از کاربر گرفته شده است را به عدد تبدیل کنیم به شرط اینکه حاوی اعداد باشد. string input; float number; input Console.ReadLine(); number float.parse(input); Parse 1 81

86 همچنین میتوانید متد ReadLine() را مستقیما در متد Parse() استفاده کنید که در این صورت نیازی به متغیر رشتهای نیست: float number; number float.parse(console.readline()); سؤال: آیا میتوانید دو دستور باال را باز هم خالصهتر کنید کار در کارگاه 3 مثال 6 4 : با تکمیل برنامه 5 4 مجموع دو عدد دریافتی را چاپ نمایید. using System ; class GetNumbers { static void Main() { string input; float firstnumber, secondnumber; Console.Write(''Enter a number:''); input Console.ReadLine(); firstnumber float.parse(input); Console.Write(''Enter another number:''); input Console.ReadLine(); secondnumber float.parse(input); Console.WriteLine(''Total '' (firstnumber secondnumber)); } } Console.WriteLine( Press any key to continue... ); Console.ReadKey(); برنامه 6 4 دریافت دو عدد و محاسبه مجموع 82

87 نتیجه اجرای برنامه در شکل 8 4 نشان داده شده است: شکل 8 4 خروجی برنامه 6 4 برنامه های زیر را در محیط VS ایجاد کنید. 1 دستورات زیر را در داخل متد Main() برای شناسایی انواع متغیرها بنویسید. با اضافه کردن دستورات WriteLine() محتوای متغیرها را بر روی صفحه نمایش نشان دهید. // Declare and initialize some variables // Use long suffix. long alongnumber 10000L; // Use double suffix. double adoublenumber D; // Use float suffix. float afloatnumber F; // Use unsigned suffix. uint anunsignednumber 1000U; // Use decimal suffix. decimaladecimalnumber M; // Use unsigned suffix and long suffix. ulonganunsignedlong UL; 83

88 84 ٢ برنامه شماره 4 4 )خوشامدگویی به کاربر( را با داده های مختلف )نام خود نام همکالسی ها( آزمایش کنید. 3 برنامه شماره 6 4 )دریافت دو عدد و محاسبه مجموع( را با اعداد صحیح و اعشاری آزمایش کنید.

89 خودآزمایی فصل چهارم ١ چه نوع حافظه کامپیوتر برای نگهداری حجم کمی از داده ها در طول اجرای یک برنامه مناسب است ٢ در زبان های برنامه نویسی مکانی از حافظه برای نگهداری موقتی داده واطالعات... نامیده می شود. ٣ منظور از نوع داده چیست ٤ نوع متغیر چه ویژگی هایی را نشان می دهد ٥ تفاوت های بین نوع داده float و double را نام ببرید. ٦ برای نگهداری هر یک از داده های زیر در برنامه یک متغیر مناسب تعریف کنید. الف( سن افراد ت( ظرفیت یک هارد دیسک امروزی ب( درجه حرارت محیط اتاق ث( جمعیت یک کشور پ( حقوق کارمند ج( وضعیت خاموش و روشن بودن یک المپ ٧ تحقیقی کوتاه بر روی روش نام گذاری مجارستانی Notation( )Hungarian با استفاده از اینترنت داشته باشید. با توجه به محیط های برنامه نویسی )IDE( پیشرفته مانند ویژوال استودیو نشان دهید که دیگر نیازی به ذکر نوع داده در ابتدای نام متغیر که در روش مجارستانی استفاده می شود وجود ندارد. ٨ شکل زیر چه روشی را برای نام گذاری متغیرها نشان می دهد نام این روش چیست ٩ چرا در هنگام ترجمه دستور زیر خطا ظاهر می شود چگونه این خطا را برطرف می کنید short value / 2 ; 85

90 ١٠ در جدول زیر کدامیک از نام های متغیر غیر مجاز است و یا مناسب نیستند. آنها را تصحیح کنید. )اولین ردیف جدول برای شما پاسخ داده شده است.( نام پیشنهادی شما نام متغیر غیرمجاز نامناسب مجاز کاربرد متغیربا توجه به معنی آن نام متغیر networkok وضعیت شبکه 29yesitsme mycurrentid intvalue 8%tax woodlength glassarea width height MySalary employeesalary 11 کدامیک از داده های زیر یک داده کاراکتری محسوب می شود برای پاسخ خود دلیل بیاورید. '! ', 'abc', '+', '!', '&', '1', '12', '08' 12 در زبان #C برای دریافت داده از ورودی از متد... و برای نمایش اطالعات در خروجی از متد... استفاده می کنیم. 86

91 13 اعداد زیر را در متغیرهای مناسب با استفاده از روش نقطه شناور جای دهید. الف( عمر زمین بر حسب سال 4,600,000,000 ب( فاصله زمین تا خورشید 149,600,000,000 متر است. پ( اندازه جرم یک اتم کربن )جرم اتمی( برابر با kg 0/ با توجه به اینکه الزم نیست مانتیس بین 0 تا 1 باشد جدول زیر را تکمیل کنید. گونه دیگری از فرم نقطه شناور نمایش عدد در فرم نقطه شناور عدد E E E E E3 15 در برنامههای صفحه گسترده اعداد بزرگ به صورت نقطه شناور نیز نمایش داده میشوند. وارد برنامه اکسل شوید و عدد بزرگی را وارد نموده و کلید Enter را بزنید. چه عددی روی صفحه نشان داده میشود پس از مشاهده فرم نقطه شناور سعی کنید با تغییر فرمت سلول مربوطه عدد را به صورت معمولی نشان دهید. 87

92 16 کدام یک از دستورات زیر می تواند مجموع دو عدد a و b را به طور صحیح نشان دهد نتیجه اجرای هر یک از دستورات را نیز بنویسید. int a 10, b 20; System.Console.WriteLine(''a'' + ''b''); System.Console.WriteLine(''a + b''); System.Console.WriteLine(a + b); System.Console.WriteLine(''a + b''+a + b); 17 سؤال زیر به زبان انگلیسی است. آن را خوانده و پاسخ صحیح را انتخاب کنید. The C# method that prints a line of output on the screen and then positions the cursor on the next line is... A) println() C) WriteLine() B) DisplayLine() D) Write() تمرینات برنامه نویسی فصل چهارم 1 برنامه ای بنویسید که دو عدد از کاربر دریافت نماید و حاصل جمع و حاصل تفریق آنها را نمایش دهد. )اعداد ورودی ممکن است صحیح و یااعشاری باشد.( 2 برنامه ای بنویسید که نام و نام خانوادگی و سن کاربر را دریافت کند و سپس اطالعات دریافتی را با رنگ های دلخواه روی صفحه نمایش نشان دهد. 3 با استفاده از یک برنامه ساده شامل متد WriteLine() رشتهها یا کاراکترهای جدول زیر را نمایش دهید تا بتوانید معادل آنها را پیدا کرده و جدول را کامل کنید. معادل کد حرف یا رشته معادل کد حرف یا رشته '\u0007' ''b\u0061ck'' 'u000a\' ''12'' + ''8'' ''0\u00200'' ''C\u0023'' '\u0040' '\u0030' 88

93 واژگان و اصطالحات انگلیسی فصل چهارم ردیف واژه انگلیسی معنی به فارسی ١ Assignment ٢ Boolean ٣ Built-In Data Type ٤ Camel Notation ٥ Concatenate ٦ Floating point notation ٧ Hungarian Notation ٨ Initialize ٩ Integer Numbers ١ Precision ١١ Primitive Data Type ١٢ Random Access Memory ١٣ Representation ١٤ Significant digits ١٥ Unsigned numbers ١٦ Variable 89

94 فصل پنجم عبارت های محاسباتی یکی از توانایی های کامپیوتر قدرت و سرعت باال در انجام محاسبات است. انجام بیش از یک میلیارد عمل جمع بر روی اعداد نوع صحیح در کمتر از یک ثانیه بسیار شگفت آور است. کامپیوترها با استفاده از چنین توانایی قادر هستند عملیات و پردازش مورد نظر در برنامه را با سرعت بر روی داده ها انجام دهند. از جمله پردازش هایی که از کامپیوتر استفاده می شود جستجوی داده مورد نظر در بین داده ها یا عمل مرتب سازی داده ها به ترتیب خاصی است.برای انجام چنین پردازش هایی الزم است ابتدا با انواع عبارت ها و محاسبات در زبان #C آشنا شویم و سپس از آنها در برنامه های خود استفاده کنیم. 90 پس از پایان این فصل انتظار می رود که فراگیر بتواند: 1 عملوند عملگر و عبارت محاسباتی را تعریف کند و آنها را به درستی به کارگیرد. 2 عملگرهای ریاضی را نام ببرد و در عبارت محاسباتی از آنها استفاده کند. 3 حاصل عبارت محاسباتی را با استفاده از جدول تقدم عملگرها به دست آورد. 4 کاربرد عملگرهای افزایشی کاهشی و انتساب را بیان نماید. 1 5 عبارت 1 چیست در درس ریاضی با عبارت های محاسباتی مختلفی مانند عبارت های زیر آشنا شدید y 6 25 x Express on ١

95 در این عبارتها عالمت نشانه عمل جمع و عالمت نشانه عمل ضرب است. به این عالمتها که بیانگر انجام یک عمل بر روی اعداد و دادهها هستند عملگر 1 گفته میشود. مثال عملگر در عبارت بر روی اعداد 3 و 5 عمل ضرب را انجام میدهد و همچنین عملگر در عبارت باال بر روی عدد 8 و نتیجه حاصلضرب یعنی عدد 15 عمل جمع را انجام میدهد. به اعدادی که یک عملگر بر روی آنها عملی را انجام میدهد عملوند 2 میگویند. اعداد 3 و 5 عملوندهای عملگر ضرب و عدد 8 و 15 عملوندهای عملگر جمع هستند. هر یک از عملگرهای ضرب و جمع بر روی دو عدد عمل میکنند و به عبارتی دارای دو عملوند هستند به این عملگرها عملگرهای دوتایی 3 گفته میشود. عملگر در عبارت عملگر تفریق است که آن نیز یک عملگر دوتایی است و حاصل تفریق 7.25 از 9 را محاسبه میکند. اما عملگر قرینه در عبارت x فقط دارای یک عملوند x است و آن را قرینه میکند. این عملگر یک عملگر یکتایی 4 است. نکته یک عبارت از تعدادی عملگر و عملوند تشکیل شده است و دارای یک حاصل یا نتیجه می باشد. نتیجه یا حاصل یک عبارت ممکن است عددی یا غیرعددی باشد عملگرهای ریاضی یا حسابی اگر در عبارتی بیش از یک عملگر وجود داشته باشد ابتدا عملگری عمل خود را انجام میدهد که اولویت 6 باالتری نسبت به دیگری داشته باشد. مثال اولویت عملگر ضرب بیش از اولویت عملگر جمع است. چنانچه دو یا چند عملگر دوتایی با اولویت یکسان در یک عبارت وجود داشته باشد ابتدا عملگر سمت چپ انجام میشود. به عبارت دیگر از سمت چپ به راست عملگرها به ترتیب انجام میشوند که به آن»شرکتپذیری چپ» 7 میگویند. در جدول 1 5 لیست عملگرهای ریاضی را به ترتیب اولویت مشاهده میکنید. عملگر قرینه اولویت باالتری نسبت به بقیه عملگرهای ریاضی دارد و عملگرهای جمع و تفریق دارای اولویت یکسان ولی کمترین اولویت را در بین عملگرهای ریاضی دارند. 91 Operator 1 B nary Operator 3 Ar thmet c 5 AssocLeft at ve 7 Operand 2 Una y Operator 4 Precedence 6

96 جدول 1 5 عملگرهای ریاضی اولویت نام عملگر نشانه مثال نوع عملگر -5 - قرینه یکتایی ضرب / تقسیم دو تایی % 5 باقیمانده تقسیم % + جمع دو تایی تفریق عملکرد عملگرهای جمع و تفریق و ضرب مانندعملکرد آنها در ریاضیات است اما عملگر تقسیم با توجه به نوع عملوندهایش می تواند تقسیم صحیح و بدون ممیز و یا تقسیم اعشاری و ممیزی انجام دهد. مثال در عبارت 9 / 2 چون عملوندها اعداد صحیح هستند بنابراین تقسیم بدون ممیز و صحیح انجام خواهد شد که نتیجه آن عدد 4 است. اما در عبارت 9.0 / 2 یا در عبارت 9 / 2.0 چون حداقل یکی از عملوندها اعشاری است بنابراین تقسیم به صورت اعشاری انجام می شود که حاصل عبارت عدد /4 5 است. در جدول 1 5 عملگر جدیدی نیز به نام باقیمانده تقسیم که با نشانه % مشخص می شود مشاهده می کنید. به وسیله این عملگر می توانیم باقیمانده تقسیم یک عدد بر عدد دیگر را با توجه به خارج قسمت صحیح و بدون اعشار به دست آوریم. مثال در تقسیم عدد 23 بر عدد 5 خارج قسمت بدون اعشار عدد 4 است بنابراین باقیمانده عدد 3 است. 23 / % برای تغییر دادن اولویت عملگرها از عالمت های پرانتز استفاده می شود. مثال در عبارت زیر ابتدا عمل جمع و سپس عمل ضرب انجام می شود. 6.5) (3 5.6 اگر چند پرانتز تو در تو نیز وجود داشته باشد ابتدا داخلی ترین پرانتز انجام می شود. 92

97 در جدول 2 5 چند نمونه از عبارت های ریاضی نشان داده شده است. جدول 2 5 مثالی از عبارت های ریاضی نوع عبارت حاصل عبارت عبارت صحیح 175 / 31 5 صحیح % اعشاری 7 5 / double اعشاری 7 5 % double اعشاری 36 / double صحیح % صحیح / صحیح % عبارت محاسباتی زیر را در نظر میگیریم و سپس نوع آن را تعیین میکنیم % 4 25 در این عبارت بیش از یک عملگر وجود دارد بنابراین ابتداعملگری که دارای اولویت باالتر است انجام میشود. چون اولویت عملگرهای و % باالتر از عملگر است بنابراین ابتدا این دو عملگر انجام میشود و از طرفی چون این دو عملگر دارای اولویت یکسان هستند برطبق شرکتپذیری چپ ابتدا عملگر سمت چپ یعنی و سپس عملگر % انجام میشود. بر همین اساس در مورد عملگرهای جمع نیز ابتدا عملگر سمت چپ و سپس عملگر بعدی انجام میشود )نمودار 1 5 (. 93 نمودار 1 5 ترتیب اجرای عملگرها

98 در برنامهها معموال حاصل یا نتیجه یک عبارت را در یک متغیر نگهداری میکنند. البته نوع متغیری که حاصل یک عبارت در آن قرار میگیرد باید با نوع عبارت سازگار باشد. مانند ظرفی در آشپزخانه که بخواهیم در آن غذا یا نوشیدنی بریزیم باید گنجایش مناسب آن غذا را داشته باشد. قوانین زیر باید به وسیله برنامه نویس در هنگام انتساب یک عبارت به یک متغیر رعایت شود 1 در غیر اینصورت با پیام خطای مترجم مواجه میشویم. مترجم زبان #C روی این قوانین سخت گیر است زیرا میخواهد از اشتباهات برنامه نویسان جلوگیری نماید این یکی از ویژگیهای زبان #C است. 1 اگر حاصل یک عبارت عدد صحیح باشد بسته به اندازه و بزرگی عدد میتواند در یک متغیر نوع صحیح که گنجایش آن مساوی یا بزرگتر از حاصل عبارت باشد جای گیرد. مثال حاصل عبارت 175 / 31 عدد 5 است این عدد کوچک میتواند در تمام متغیرهای نوع صحیح زیر قرار گیرد. sbyte, byte, short, ushort, int, uint, long, ulong ولی در عبارت / 10 چون حاصل عبارت عدد است که عدد صحیح بزرگی است فقط در متغیرهای نوع int, uint, long, ulong قابل نگهداری است. 2 اگر حاصل یک عبارت از نوع صحیح باشد میتواند در یک متغیر نوع اعشاری نیز ذخیره شود اما با این تفاوت که اعداد بزرگ )long( فقط با ٧ رقم دقت )در نوع )float و یا با ١٥ رقم دقت )در نوع )double ذخیره میشود و بقیه ارقام عدد گرد میشود. مثال در دستور زیر حاصل عبارت / 10 در متغیر اعشاری ذخیره میشود ولی به دلیل اینکه عدد بزرگی است به صورت گرد شده در متغیر ذخیره میشود )شکل ٢ ٥ (. float number / 10; Console.WriteLine(''Number '' number); شکل 2 5 نتیجه اجرای عملگر تقسیم Str ct type check ng anguage 1 94

99 همان طور که در شکل ٢ ٥ مشاهده می کنید مقداری که در متغیر number وجود دارد به صورت نماد علمی نشان داده می شود که اگر آن را به صورت معمولی تبدیل کنیم خواهیم داشت: E اگر این مقدار را با حاصل عبارت اولیه مقایسه کنیم خواهیم دید که عدد با ٧ رقم گرد شده است: حاصل عبارت مقدار ذخیره شده در متغیر اگر حاصل یک عبارت از نوع اعشاری باشد نمی تواند به طور ضمنی در یک متغیر نوع صحیح جای داده شود فقط می تواند در یک متغیر اعشاری )نوعfloat و یا )double جای گیرد. 4 اگر حاصل یک عبارت از نوع اعشاری double باشد فقط در متغیر نوع double می تواند جای می گیرد. چرا حاصل تقسیم یک عدد اعشاری بر یک عدد صحیح عددی اعشاری است و مترجم آن را از نوع double در نظر می گیرد. تقسیم زیر را در نظر بگیرید: / 14 با توجه به اینکه عدد اعشاری است بنابراین تقسیم نوع اعشاری انجام می شود و نتیجه عبارت از نوع double خواهد بود. برای نگهداری نتیجه این عبارت باید ابتدا متغیر مناسبی را تعریف کنیم و سپس با دستور انتساب حاصل عبارت را در آن ذخیره کنیم. با توجه به اینکه حاصل عبارت از نوع double است بنابراین باید متغیر نیز اعشاری و از نوع double باشد. دستور زیر متغیری برای ذخیره معدل دانش آموز تعریف می کند تا نتیجه تقسیم را در آن ذخیره نماید. Double meanscore; اکنون می توانید مقدار عبارت را در متغیر مزبور با استفاده از دستور انتساب مقداردهی کنید. Double meanscore / 14 ; جایگزینی دو دستور باال با یک دستور به صورت زیر خواهد بود: Double meanscore / 14 ; با اجرای دستور قبل عمل تقسیم انجام شده و حاصل تقسیم یعنی عدد در متغیر meanscore ذخیره می شود. 95

100 سؤال: آیا الزم است معدل نمرات با چنین دقتی )15 رقم( ذخیره شود با توجه به اینکه معموال معدل نمرات با دو رقم اعشار بیان می شود بنابراین در این موارد بهتر است از متغیر نوع float استفاده کنیم. در این صورت الزم است نوع عبارت محاسبه معدل نیز float باشد.برای اینکه نوع عبارت float شود می توانید از مترجم بخواهید عدد را یک عدد نوع F را بعد از عدد می نویسیم F یا f در نظر بگیرد بدین منظورحرف float بنابراین دستور زیر را می نویسیم: float meanscore f / 14 ; با اجرای دستور باال عدد 15/67857 در متغیر meanscore ذخیره می شود. اگر فراموش کنید که در دستور باال حرف f را بنویسید مترجم خطا می دهد. چون در سمت راست عالمت انتساب یک عبارت از نوع داده double است ولی در سمت چپ یک متغیر از نوع float است که ظرفیت کمتری نسبت به double دارد. در چنین حالتی در محیط VS یک خط قرمز زیر عبارت کشیده می شود و مترجم خطایی را صادر می کند )شکل 3 ٥ (. شکل 3 5 خطای تبدیل نوع double به نوع float شکل ٣ ٥ بیان می کند که:»مترجم نمی تواند نوع داده double را به طور ضمنی و خودکار به نوع float تبدیل کند.«باید به طور صریح و واضح از مترجم بخواهید عمل تبدیل نوع را انجام دهد. 96 نکته اگر در برنامهای با عبارتها و اعداد اعشاری با دقت حداکثر ٧ رقم سر و کار دارید و میخواهید از متغیرهای نوع float استفاده کنید باید پس از هر عدد اعشاری یک حرف f یا F قرار دهید تا مترجم آن عدد را بهعنوان نوع float در نظر بگیرد. اما اگر از متغیرهای نوع double استفاده میکنید دیگر نیازی به نوشتن حرف f نیست. float meanmark 219.5f / 14;

101 کار در کارگاه مثال 1 5 : مجموع و معدل نمرات درسی را طبق جدول ٣ ٥ محاسبه کنید. نام درس فیزیک شیمی ریاضی ادبیات جدول 3 5 نمرات درسی یک دانش آموز نمره درس 1 تعداد واحد / / ورزش به دلیل این که میخواهیم روی دادهها پردازش انجام دهیم بهتر است ابتدا نمرات را داخل متغیرهای مناسب ذخیره کنیم: float physicmark 17.5F, chemistrymark 19, mathmark 14.5F; float litracymark 18, PEMark 19; به همین صورت تعداد واحدها را نیز داخل متغیرهای مناسب قرار میدهیم: int physiccredit 3, chemistrycredit 2, mathcredit 4; int literacycredit 2, PECredit 1; حال میخواهیم مجموع نمرات را به دست آوریم. با توجه به اینکه تعداد واحد هر درس مختلف است نمیتوانیم به سادگی نمرات را با یکدیگر جمع کنیم بلکه باید هر نمره را در تعداد واحد درسی مربوطه ضرب کنیم و سپس حاصل ضربهای به دست آمده را با یکدیگر جمع کنیم و نتیجه را در یک متغیر قرار دهیم. بنابراین متغیری به نام totalmark برای این منظور تعریف و حاصل عبارت محاسباتی مربوطه را در آن قرار میدهیم: float totalmark ; totalmark (physicmark physiccredit) (chemistrymark ( chemistrycredit (mathmark mathcredit) (literacymark literacycredit) (PEMark PECredit); Cred t Hour 1 Phys ca Educat on 2

102 سؤال:این عبارت محاسباتی نیازی به پرانتز گذاری ندارد.چرا در اینجا فقط برای باال بردن خوانایی عبارت یا برنامه از پرانترها استفاده کرده ایم. پس از به دست آوردن مجموع نمرات که در متغیر totalmark قرار گرفته است مجموع واحدها را نیز حساب می کنیم و در یک متغیر به نام totalcredit قرار می دهیم. int totalcredit physiccredit + chemistrycredit + mathcredit + literacycredit + PECredit; در این لحظه میتوانیم با تقسیم مجموع نمرات بر مجموع واحدها معدل را به دست آوریم و در یک متغیر ذخیره کنیم. float average totalmark / totalcredit; برای نمایش مقادیر متغیرها از دستورات زیر استفاده میکنیم: Console.WriteLine(''Total mark:'' totalmark); Console.WriteLine(''Total credit:'' totalcredit); Console.WriteLine(''Average:'' average); با توجه به توضیحات باال برنامه مورد نظر چنین خواهد بود: using System; class Average { static void Main() { float physicmark 17.5F, chemistrymark 19, mathmark 14.5F; float litracymark 18, PEMark 19; int physiccredit 3, chemistrycredit 2, mathcredit 4; int literacycredit 2, PECredit 1; float totalmark; totalmark (physicmark * physiccredit) (chemistrymark * chemistrycredit) (mathmark * mathcredit) (litracymark * literacycredit) (PEMark * PECredit); 98

103 } } int totalcredit = physiccredit + chemistrycredit + mathcredit + literacycredit + PECredit; float average = totalmark / totalcredit; Console WriteLine( Total mark: + totalmark); Console WriteLine( Total credit: + totalcredit); Console WriteLine( Average: + average); Console ReadKey(); برنامه 1 5 محاسبه معدل نمرات یک دانش آموز خروجی برنامه چنین است: شکل 4 5 خروجی برنامه ١ 5 به مثال ١ ٥ دستوراتی اضافه کنید که نمرات درسی را از ورودی دریافت کند. این برنامه را در محیط VS بنویسید و آن را ذخیره ترجمه و اجرا نمایید. 99

104 2 3 ٥ عملگرهای افزایشی 1 و کاهشی در زبان برنامهنویسی #C عملگرهای یکتایی و به ترتیب برای افزایش و کاهش مقدار یک متغیر به اندازه یک واحد در نظر گرفته شده است. البته این عملگرها از زبان C وارد این زبان شده اند و برای کوتاه شدن و تایپ کمتر دستورات ابداع شده اند که در زبانهای دیگر امروزی مانند جاوا نیز وجود دارند ( جدول 4 5 (. جدول 4 5 )عملگرهای افزایشی و کاهشی( نام عملگر نوع عملگر نشانه مثال value یا value افزایش یکتایی value یا value کاهش یکتایی اکنون میتوانیم اضافه کردن یک نمره به درس ریاضی را با استفاده از عملگر افزایشی انجام دهیم: عملگر افزایشی قبل از نام متغیر قرار گرفته است // ; ++mathmark یا عملگر افزایشی بعد از نام متغیر قرار گرفته است // ; mathmark++ عملگر افزایشی یا کاهشی را می توانید قبل از نام متغیر و یا بعد از نام متغیر ذکر کنید که درهر دو حالت سبب می شود مقدار متغیر به اندازه یک واحد تغییر کند. تفاوت بین این دو حالت را در سؤاالت 11 و 12 خودآزمایی ببینید. Increment 1 Decrement 2 100

105 4 ٥ عملگرهای انتساب در جدول 5 5 عملگرهای انتساب دیده می شود. نوع عملگر انتساب نشانه %, /,,,, &,, ^, <<, >> با عملگر و کاربرد آن در فصل قبل آشنا شدید که برای ذخیره کردن یک مقدار در یک متغیر استفاده میشود. دستورات زیر را در نظر بگیرید. int x, y ; x 6; string hellostring ''Hello World''; y x; در دستور آخر مقداری که در متغیر x قرار دارد )عدد 6 ) به متغیر y منتسب میشود و y نیز برابر 6 میشود. نکته حاصل عبارتی که دارای عملگر انتساب است مقدار داده یا متغیری است که در سمت راست عملگر واقع شده است. x 6; یعنی x 6 مثال در دستور زیر int z y x 9 ; چند عملگر انتساب وجود دارد و از سمت راست به ترتیب انجام میشوند. ابتدا عدد 9 در متغیر x قرار میگیرد و سپس حاصل عبارت که عدد 9 است در متغیر y کپی شده و سپس این مقدار در متغیر z کپی میشود. یعنی در عبارتی که عملگرهای انتساب وجود دارد این عملگرها از سمت راست به چپ انجام میشوند ( شرکت پذیر راست( بر خالف عملگرهای ریاضی مشابه که از چپ به راست انجام میشوند. 101 int z y x 9 ;

106 اکنون اگر بخواهیم یک نمره به نمره درس ریاضی در مثال ١ ٥ اضافه کنیم با توجه به اینکه نمره هر درس را در یک متغیر ذخیره کردیم دستور الزم برای افزایش یک واحد به متغیر مربوطه را بنویسید. mathmark 1 متغیر mathmark حاوی نمره درس ریاضی است. برای افزایش یک نمره از دستور انتساب زیر استفاده میکنیم: mathmark mathmark 1 ; با اجرای این دستور انتساب ابتدا کامپیوتر عبارت سمت راست عالمت را محاسبه میکند. بدین منظور محتوای متغیر mathmark که برابر با 14/5 است با عدد یک جمع میشود و حاصل عبارت یعنی 15/5 را در متغیر سمت چپ جایگزین مقدار قبلی آن میکند. بنابراین از این به بعد محتوای متغیر مزبور 15/5 خواهد بود که به این ترتیب یک واحد افزایش یافته است. با دستوری مشابه میتوانیم مقدار یک متغیر را کاهش دهیم مثال اگر بخواهید دو واحد از مجموع تعداد واحدها کم کنید دستور زیر را مینویسیم: totalcredit totalcredit 2 ; در این دستور نیز ابتدا عبارت سمت راست محاسبه و نتیجه در متغیر سمت چپ قرار میگیرد. در جدول 5 5 عالوه بر عملگر عملگرهای دیگر انتساب همراه با یک عملگر ریاضی وجود دارند. عملگرهای و و / و هر یک عالوه بر عمل انتساب یک عمل ریاضی را نیز روی یک عملوند مشترک انجام میدهند تا تایپ دستورات خالصه شود. فرض کنید بخواهید محتوای متغیر x را سه برابر کنید در این صورت از دستور زیر استفاده میکنید: 3; = x سؤال: معادل دستور ;3 = x چه دستوری است مثال 2 ٥ : با اجرای دستورات زیر چه عددی بر روی خروجی نشان داده میشود int x = 3; int y = 4; x = y; Console WriteLine(x); در دستور ; y x حاصل ضرب متغیر x در متغیر y محاسبه میشود )برابر 12( و در متغیر x قرار میگیرد. بنابراین عدد 12 در روی صفحه نمایش داده میشود. سؤال: معادل دستور ; y x چه دستوری است 102

107 خودآزمایی فصل پنجم 1 عبارت عملگر و عملوند را با ذکر یک مثال مشخص کنید. 5x 4x را با توجه به جدول ١ ٥ )اولویت عملگرها( به صورت یک 2 عبارت ریاضی + y + 3 عبارت قابل قبول در #C بنویسید. 3 مترجم در ترجمه کدام یک از دستورات زیر خطا میدهد دلیل خود را ذکر کنید. 1) int number 127.9; 2) float number ; 3) ushort mymark 1300; 4) sbyte totalscore 250; 4 اگر در متغیر number یک عدد صحیح قرار داشته باشد دستوری بنویسید که رقم یکان آن را بدست آورده و در خروجی نشان دهد. 5 در دستورات زیر نمودار اجرای عملگرها را مانند شکل 1 5 در ابتدای این فصل رسم کنید و حاصل رابه دست آورید. int n 600 ; 4 9 % 10 2 % 8 System.Console.Writeline( 12 ; 2) * 3 6 برای انجام عبارتهای ستون سمت راست از چه عملگری در ستون چپ استفاده میکنید % الف 1 کاهش 6 واحد از یک متغیر ب 2 افزایش یک واحدبه یک متغیر ج 3 کاهش یک واحد از یک متغیر د 4 افزایش n واحد به یک متغیر ه 5 محاسبه رقم یکان یک عدد صحیح 103

108 7 خروجی قطعه کد زیر را به دست آورید. اعداد نشان داده شده در خروجی مانند چه دنبالهای از اعداد در ریاضیات است n 0; d 4; a 5; Console.WriteLine(a d n); n 1; Console.WriteLine(a d n); n 1; Console.WriteLine( a d n ) ; n 1; Console.WriteLine( a d n ) ; در متدهای () WriteLineباال با چه فرضی فضای نامی System در ابتدای هر خط ذکر نشده است 8 اگر متغیر Z را یکبار با عدد 5 و بار دیگر با عدد 3 مقداردهی کنیم دستور ;(z) Console.Writeline چه مقداری را در نهایت چاپ میکند توضیح دهید 9 برنامهای بنویسید که دو عدد از ورودی دریافت نماید و مقادیر درون دو متغیر را جابجا کند. ( از مثال جا بجایی محتوای دو لیوان حاوی شیر و نوشابه کمک بگیرید( 10 دستورات زیر بر روی مقادیر متغیرهای a,b چه عملی را انجام میدهد پاسخ را در جدول Trace وارد کنید. int a 5; int b 10; a b a a b; b a b; a a b; 104

109 11 نتیجه اجرای دستورات زیر چیست int a 5; int b a; Console.WriteLine(a); Console.WriteLine(b); 12 نتیجه اجرای دستورات زیر چیست نتیجه این تمرین را با تمرین قبلی مقایسه کنید. int a 5; int b a ; Console.WriteLine(a); Console.WriteLine(b); 13 سئوال زیر به زبان انگلیسی است آن را خوانده و پاسخهای صحیح را مشخص کنید. Which of the following is the correct way to initialize the variables i and j to a value 10 each? A) int i 10 ; B) int i 10, j 10; int j 10 ; C) int i, j ; D) int i, j 10; i 10: j 10; E) int i j 10; 105

110 تمرینات برنامهنویسی فصل پنجم 1 نیروی جاذبه در کره ماه 1 نیروی جاذبه در زمین است. برنامهای بنویسید که وزن یک 6 شخص در روی زمین را سؤال کرده و سپس وزن وی در کره ماه را حساب کند. 2 اگر محیط 1 یک مربع 2 برابر 18 سانتی متر باشد برنامهای بنویسید که اطالعات زیر را روی صفحه نشان دهد: الف( اندازه هر ضلع 3 مربع بر حسب سانتی متر ب( اندازه مساحت 4 مربع بر حسب سانتی متر مربع 3 برنامهای بنویسید که محیط یک مربع را سؤال کند و سپس اندازه ضلع و اندازه مساحت مربع را محاسبه نماید. 4 سال 1400 شمسی را در نظر بگیرید. تعداد روزهای سپری شده تا این سال چند روز است تعداد ساعتهای سپری شده چقدر است برنامهای بنویسید که شماره سال را از کاربر سؤال کند و سپس تعداد روز و ساعت سپری شده را در متغیرهای مناسبی قرار دهد و سپس نمایش دهد. 5 یک فروشگاه پوشاک اجناس خود را با 15 درصد تخفیف حراج کرده است برنامهای بنویسید که مبلغ قبل از تخفیف جنس را از ورودی دریافت کند و سپس قیمت بعد از تخفیف را محاسبه و نمایش دهد. 6 برای یک دستگاه خودپرداز برنامهای بنویسید که یک عدد را به عنوان مبلغ یک اسکناس دریافت کند و آن را به اسکناسهای کوچکتر خرد ٥ کند. مثال بتواند یک اسکناس 100 هزار ریالی را به دو اسکناس ریالی و یا 10 اسکناس ریالی خرد کند. ( راهنمایی: از عملگرهای % و / استفاده کنید.( Per meter 1 S de 3 Change ٥ Square 2 Area 4 106

111 7 برنامه ای بنویسید که مقلوب یک عدد صحیح دو رقمی دریافتی از کاربر را نمایش دهد. ٨ برنامه ای بنویسید که تاریخ تولد هر فرد را بر حسب ماه روز و سال دریافت نماید و سپس تعداد روزهای عمر وی را حساب کند. هر سال ٣٦٥ روز و هر ماه 30 روز است. 9 )این سؤال نیاز به برنامه نویسی ندارد و فقط یک محاسبه ساده است.( می خواهیم کف یک اتاق 4 3 متری را سرامیک کنیم. اگر هر قطعه سرامیک به شکل مربع و به اندازه 50 سانتی متر باشد به چند قطعه سرامیک نیاز داریم اگر اندازه آن برابر 40 سانتی متر باشد آن وقت به چه تعداد سرامیک نیاز داریم 10 برنامه ای به نام Simple Tiling Calculator بنویسید که اندازه طول )Width( و عرض )Length( یک اتاق را بپرسد و سپس اندازه یک سرامیک مربع شکل را سؤال نماید. تعداد سرامیک های الزم برای پوشش کف را محاسبه و تعیین کند. توجه داشته باشید که نتیجه به دست آمده از محاسبات باید عدد صحیح باشد. مثال عددی مانند 17/25 باید به عدد 18 گرد شود. 11 مدیر یک ساختمان مسکونی قصد دارد هزینه برق عمومی ساختمان را بر اساس تعداد نفرات ساکنین تقسیم کند. تعداد نفرات هر خانواده طبق جدول زیر است برنامه ای بنویسید تا به مدیر ساختمان در بدست آوردن هزینه برق هر خانواده کمک کند. برنامه باید یک عدد به عنوان هزینه برق از کاربر دریافت کند و سپس با استفاده از اطالعات جدول هزینه برق هر خانوار را محاسبه و نمایش دهد. 107 شماره واحد تعداد نفرات خانواده

112 فصل ششم دستورهای شرطی در بیشتر برنامه های کاربردی الزم است مقدار داده ها را بررسی و مقایسه کنیم. سپس بر اساس نتیجه حاصل از بررسی دستور یا دستورهایی را اجرا کنیم. به عبارت دیگر در برنامه ها الزم است بتوانیم بر اساس مقدار داده ها تصمیم گیری کنیم. برنامه هایی که تاکنون نوشته ایم تمام دستورهای داخل متد Main() پشت سرهم و به نوبت اجرا می شدند. اکنون در این فصل با دستورهای شرطی آشنا می شویم که به وسیله آنها اجرای دستورها و پردازش آنها کنترل می شوند و رفتار برنامه بر اساس وضعیت داده ها تغییر می کند. پس از پایان این فصل انتظار می رود که فراگیر بتواند: 1 انواع عملگرهای مقایسه ای را توضیح دهدو آنها را در برنامه استفاده کند. 2 ساختار دستور if وelseif را در برنامه های شرطی خود استفاده کند. 3 مفهوم عملگرهای منطقی را شرح دهد وانواع آنها را نام ببرد. 4 ازعملگرهای منطقی به طور صحیح در برنامه ها استفاده نماید. 5 با استفاده از جدول عملگرهای منطقی نتیجه عبارتهای ترکیبی منطقی و مقایسه ای را به دست آورد. 6 اولویت عملگرها را با استفاده از جدول تقدم عملگرها در حل عبارات ترکیبی به کاربندد. 7 دستور switch را در برنامه های خود به کارگیرد. 8 باترکیب دستورهای شرطی برنامه هایی باساختارپیچیده شرطی بنویسد. 108

113 1 1 6 عبارت منطقی یا بولین در فصل چهارم در قسمت معرفی انواع دادهها با نوع داده منطقی آشنا شدید. این نوع داده فقط دارای دو مقدار true )درست) یا false )نادرست( است. عبارت منطقی نیز عبارتی است که حاصل آن فقط یکی از دو مقدارtrue یا false است. مثال عبارت < یک عبارت منطقی است که نتیجه آن false است چون 12 کوچکتر از 10 نیست. ولی در عبارت > 0 x به شرط اینکه x عددی مثبت باشد نتیجه عبارت true است. در دو مثال باال از عملگرهای مقایسهای < یا > استفاده شده است عملگرهای مقایسهای دیگری نیز وجود دارند که در جدول 1 6 مشاهده میشود. این عملگرها شبیه عملگرهایی است که در ریاضیات استفاده میشود. معموال درعبارتهای منطقی از عملگرهای مقایسهای استفاده میشود عملگرهای مقایسهای همان طور که از نام این عملگرها مشخص است برای مقایسه دادهها استفاده میشوند و نتیجه آنها یکی از دو مقدار true یا false است. عملگرهای مقایسهای میتوانند دو عدد صحیح یا اعشاری و یا دو داده کاراکتری و یا رشتهای را با یکدیگر مقایسه کنند. عالمت بعضی از عملگرهای مقایسهای در زبان #C با عالمت ریاضی آنها کمیمتفاوت است مثال برای بررسی مساوی یا برابر بودن دو مقدار از عالمت استفاده میشود )دو بار عالمت ) و یا برای بررسی مخالف یا نابرابر بودن دو مقدار از عالمت! استفاده میشود. در جدول 1 6 هر یک از عملگرهای مقایسهای به همراه عالمت ریاضی آنها نشان داده شده است. 109 Boo ean Express on 1 Compar 2 son Operators

114 جدول 1 6 عملگرهای مقایسه ای نام عملگر عملگر در زبان #C نشانه عملگر در ریاضی مثال delta 0 = = = برابری name! AMIN max < number x < a temperature > 25 (a b) > c > >!= > <= > >= نامساوی کوچکتر کوچکتر یا مساوی بزرگتر بزرگتر یا مساوی مثال 1 6 : در برنامه 1 6 حاصل چند عبارت منطقی بر روی صفحه نشان داده میشود: using System ; class Expression { static void Main() { int weight 700; Console.WriteLine(weight > 500); // True char gender 'm'; Console.WriteLine(gender 'f'); // False doublecolorwavelength 1.630; Console.WriteLine(colorWaveLength> 1.621); // True Console.WriteLine('B' 'A' 1); // True Console.ReadKey(); } } برنامه 1 6 عبارت های منطقی 110

115 نکته حاصل عبارتهای منطقی را میتوانید بر روی صفحه خروجی نمایش دهید و یا در داخل متغیرهایی از نوع bool ذخیره کنید. 3 6 دستور شرطی if 1 در درس مبانی کامپیوتر با دستور شرطی»اگر«آشنا شدید و به وسیله آن می توانستید اجرای دستورها را کنترل کنید. در زبان برنامه نویسی #C از دستور if )با حروف کوچک نوشته می شود( برای کنترل اجرای دستورها و بررسی شرط استفاده می شود. ساختار کلی دستور if به صورت زیر است: )عبارت منطقی( if ; دستور دستور شرطی if از سه بخش تشکیل شده است: کلمه رزرو شده if عبارت منطقی داخل پرانتز و دستوری که در صورت درست )true( بودن نتیجه عبارت اجرا خواهد شد. توجه داشته باشید که پس از کلمه if یک جفت پرانتز وجود دارد و عبارتی از نوع منطقی که برای بررسی و مقایسه داده است داخل پرانتز نوشته میشود. در خط بعدی دستوری که میخواهیم در صورت درست بودن عبارت منطقی اجرا شود با تورفتگی مینویسیم و در انتهای آن عالمت ; رابه منزله پایان دستور if قرار میدهیم. در دستورات زیر نمونهای از به کار گیری دستور if را میبینید. if (mark < 10) Console.WriteLine(''Failed''); سؤال: اگر در متغیر mark نمره 8/5 قرار داشته باشد به نظر شما با اجرای دستورهای باال چه پیامی بر روی صفحه نمایش ظاهر میشود برای نمره 18 چطور خواهد بود Conditional Statement 1 111

116 نکته به عالمت نقطه ویرگول در دستور if توجه کنید. بعد از عالمت پرانتز عالمت نقطه ویرگول نگذارید زیرا دستور if هنوز تمام نشده است. بلکه عالمت نقطه ویرگول باید در انتهای دستور نوشته شود. نقطه ویرگول ندارد (عبارت منطقی) if ;دستور فلوچارت دستور if ساده به صورت زیر است: عبارت منطقی false true دستور فلوچارت 1 6 دستور if وقتی که کامپیوتر در حال اجرای برنامه است با رسیدن به دستور if ابتدا مقدار عبارت را محاسبه می کند. در صورتی که ارزش عبارت true باشد دستوری که بعد از if قرار دارد اجرا می شود و در صورتی که مقدار عبارت false باشد دستور مربوطه اجرا نمی شود. 112

117 مثال 2 6 : می خواهیم برنامه ای بنویسیم که رمز ورود را از کاربر دریافت کند و در صورت صحیح بودن پیام مناسب چاپ نماید)رمز صحیح.)admin123 الگوریتم یا روش انجام کار: ابتدا رمز را از کاربر دریافت کرده و در متغیر password قرار می دهیم. اگر رمز وارد شده مساوی admin123 بود پیام Welcome را نمایش می دهیم. دستور شرطی این برنامه در زیر آورده شده است. if (password ''admin123'' ) Console.WriteLine(''Welcome '' ); password == ''admin123'' false true اعالم کن ''welcome'' 113 فلوچارت 2 6 بررسی رمز ورود classlogin { staticvoid Main() { string password; Console.Write(''Enter password:''); password Console.ReadLine(); if (password ''admin123'') Console.WriteLine(''Welcome''); Console.WriteLine(''Press any key to continue...''); Console.ReadKey(); } } برنامه 2 6 برنامه بررسی رمز ورود

118 کار در کارگاه ١ 1 برنامه ٢ ٦ را در محیط VS بنویسید ترجمه و اجرا نمایید و به ازای ورودی های مختلف برنامه را آزمایش کنید. ٢ مثال 3 6 : می خواهیم برنامه ای بنویسیم که عدد بزرگتر را از بین دو عدد دریافتی کاربر پیدا کند. الگوریتم یا روش انجام کار: ابتدا اعداد مورد نظر را از کاربر دریافت کرده و در دو متغیر firstnumber و secondnumber قرار می دهیم.برای پیدا کردن بزرگ ترین عدد ابتدا اولین عدد را به عنوان عدد بزرگتر فرض می کنیم و داخل یک متغیر مثال به نام biggernumber قرار می دهیم. آن گاه مقدار این متغیر) فرض خود را( را با عدد بعدی مقایسه می کنیم. اگر این عدد همچنان بزرگتر بود نیازی به انجام کاری نیست اما اگر عدد دوم بزرگتر بود الزم است فرض اولیه خود را تصحیح کنیم و عدد دوم را به عنوان عدد بزرگتر در نظر بگیریم. به این ترتیب درمتغیر biggernumber عدد دوم را قرار می دهیم. در انتها نیز مقدار موجود در biggernumber را نمایش می دهیم. اگر بیش از دو عدد در اختیار داشتیم و بخواهیم عدد بزرگتر را پیدا کنیم باز هم از همین روش یا الگوریتم می توانیم استفاده کنیم.فلوچارت 3 6 را مشاهده کنید. biggernumber = firstnumber secondnumber > firstnumber false true biggernumber = secondnumber فلوچارت 3 6 پیدا کردن عدد بزرگتر از بین دو عدد 114

119 class FindMaximum { static void Main() { string input; int firstnumber, secondnumber ; Console.Write(''Enter a number:''); input Console.ReadLine(); firstnumber int.parse(input); Console.Write(''Enter another number:''); input Console.ReadLine(); secondnumber int.parse(input); int biggernumber firstnumber; if (secondnumber>firstnumber) biggernumber secondnumber; Console.WriteLine(''The maximum number is:'' دریافت عدد اول دریافت عدد دوم biggernumber); } } Console.WriteLine(''Press any key to continue...''); Console.ReadKey(); برنامه 3 6 برنامه تشخیص عدد بزرگتر از بین دو عدد توجه داشته باشید که در نوشتن دستورهای باال همه دستورها به جز خط بعد از دستور if زیر هم نوشته می شوند. سؤال:به نظر شما چرا دستور secondnumber; biggernumber = از ابتدای خط شروع نشده است و به اندازه یک tab به سمت داخل نوشته شده است 115

120 دلیل این کار این است که می خواهیم نشان دهیم که این دستور یک دستور عادی نیست بلکه اجرای این دستور وابسته به ارزش عبارت منطقی دستور if است. بنابراین همواره سعی کنید دستور مربوط به دستور if را کمی داخل تر بنویسید تا برنامه خوانا و واضح باشد. اگر چه رعایت نکردن این قاعده تاثیری در ترجمه و اجرا ندارد و اگر حتی تمام دستورها را پشت سر هم و در یک خط طوالنی نیز بنویسید باز برنامه ترجمه می شود اما اشکال زدایی و یا گسترش برنامه بسیار سخت خواهد بود و درک برنامه نیز مشکل می شود. مثال 4 6 : عددی صحیح داخل متغیری به نام number قرار دارد و می خواهیم زوج بودن آن را پس از تشخیص با پیامی مناسب اعالم کنیم. الگوریتم یا روش انجام کار: می دانیم عددی زوج است که رقم یکان آن یکی از اعداد 0 و 2 و 4 و 6 و 8 باشد.از طرفی می دانیم که عدد زوج بر 2 بخش پذیر است یعنی باقیمانده تقسیم آن بر عدد 2 صفر است. از یکی از این دو روش می توانیم به سادگی زوج بودن عدد را تشخیص دهیم. در این مثال از روش بخش پذیری بر 2 استفاده می کنیم. ابتدا باقیمانده تقسیم عدد بر 2 را حساب می کنیم اگر باقیمانده برابر صفر بود پیامی را روی صفحه نمایش می دهیم تا نشان دهد که عدد زوج است. int remainder number % 2; if (remainder 0) Console.WriteLine(number '' is Even.''); اگر در متغیر number عددی زوج مانند 16 باشد حاصل باقیمانده تقسیم آن عدد بر 2 صفر خواهد شد و در این صورت نتیجه عبارت منطقی در دستور if مقدار true خواهد بود. بنابراین دستور نمایش پیام اجرا می شود و اعالم می کند که عدد زوج است. اما اگر در دستورهای باال عددی که در متغیر number قرار دارد عددی فرد مانند 15 باشد حاصل باقیمانده تقسیم آن عدد بر 2 عدد یک خواهد شد و در این صورت نتیجه عبارت منطقی در دستور if مقدار false خواهد بود.بنابراین دستور نمایش پیام اجرا نمی شود و چیزی روی صفحه نشان داده نمی شود. 116

121 نکته یکی از اشتباهات رایج برنامه نویسان در نوشتن عبارت منطقی دستور if استفاده از عالمت به جای است. در این صورت مترجم متوجه بروز چنین اشتباهی میشود و عالوه بر کشیدن خط قرمز در زیر عبارت مورد نظر خطایی را صادر میکند )شکل 1 ٦ (. شکل 1 6 اشتباه رایج برنامه نویسان و بروز خطای مترجم مثال 5 6 : اکنون می خواهیم دستورهای مربوط به مثال 4 6 را طوری توسعه دهیم که اگر در متغیر number عددی فرد وجود داشت آن را شناسایی کرده و پیام مناسب اعالم کند. الگوریتم یا روش انجام کار: برای انجام این کار می توانیم یک دستور if به دستورهای قبلی اضافه کنیم که برای تشخیص عدد فرد استفاده شود. اگر باقیمانده تقسیم عدد بر 2 برابر یک شود آن عدد فرد است. بنابراین پیام "عدد فرد است" نمایش داده می شود. از آنجا که حاصل باقیمانده هر عددی بر 2 عدد صفر یا یک است بنابراین به جای شرط مساوی یک از شرط نامساوی صفر استفاده می کنیم. فلوچارت 4 6 را مشاهده کنید. 117

122 Remainder=number %2 remainder = = 0 false true اعالم کن ''عدد زوج است'' remainder! = 0 false true اعالم کن ''عدد فرد است'' فلوچارت 4 6 تشخیص زوج و فرد با دو دستور if 118

123 مطابق با فلوچارت 4 6 دستورهای الزم برای انجام کار چنین خواهد بود: int remainder number % 2; if (remainder 0) Console.WriteLine(number ''is Even''); if (remainder! 0).Console.WriteLine(number ''is Odd''); 4 6 دستور شرطی elseif در مثال 4 6 برای اینکه عدد زوج یا فرد را تشخیص دهیم از باقیمانده تقسیم عدد بر 2 استفاده کردیم.در فلوچارت شکل 4 6 تصمیم گیری بر اساس باقیمانده تقسیم صورت می گیرد که عدد صفر یا مخالف است. در چنین مواردی از دستور شرطی elseif می توان استفاده کرد. شکل کلی این دستور چنین است: )عبارت منطقی( if ; دستور شماره ١ else ; دستور شماره ٢ اگر نتیجه عبارت منطقیtrue باشد دستور شماره 1 که مربوط به قسمت if است اجرا می شود و در غیر اینصورت یعنی اگر نتیجه عبارت منطقیfalse باشد دستور شماره 2 که مربوط به قسمت else است اجرا می شود. نکته دستور if else را خوانا بنویسید یعنی: دستورهای شماره ١ و ٢ که مربوط به قسمت if یا قسمت else است را با کمی تورفتگی بنویسید تا معلوم شود که هرکدام متعلق به چه قسمتی است. مراقب باشید که بعد از کلمه رزرو شده else عالمت نقطه ویرگول قرار ندهید. 119

124 دستور elseif به صورت فلوچارت 5 ٦ در زیر نشان داده شده است. توجه داشته باشید که همواره فقط یکی از دو دستور شماره 1 یا شماره 2 اجرا می شود و محال است که هر دو دستور با هم اجرا شوند. true عبارت منطقی )مقایسه و بررسی داده( false دستور شماره ٢ دستور شماره ١ فلوچارت ٥ ٦ فلوچارت دستور if else مثال 6 6 : در این مثال دستورهای تشخیص زوج یا فرد بودن عدد را با استفاده از دستور elseif طبق فلوچارت 6 6 می نویسیم. Remainder = number %2 true remainder = = 0 false اعالم کن عدد فرد است اعالم کن عدد زوج است فلوچارت 6 6 تشخیص عدد زوج یا فرد 120

125 int remainder number % 2; if (remainder 0) Console.WriteLine(number ''is Even''); else Console.WriteLine(number '' is Odd''); روشی که در این مثال استفاده شد نسبت به روشی که در مثال 4 6 به کار گرفته شد را با یکدیگر مقایسه کنید. کدام یک بهتر است کار در کارگاه 2 مثال 7 6 : می خواهیم برنامه ای بنویسیم که حقوق دریافتی )خالص ) یک کارمند را محاسبه نماید. هر کارمند دارای یک حقوق ثابت است که با توجه به میزان تحصیالت و تجربه کاری معین می شود. از حقوق تمام کارمندان 7 درصد به عنوان حق بیمه کسر می گردد. همچنین کارکنانی که حقوق آنها بیش از ده میلیون ریال باشد مالیات به اندازه 5 درصد کسر می گردد )مالیات به مازاد بر ده میلیون تعلق می گیرد(. الگوریتم یا روش انجام کار: فلوچارت 7 6 عملیات محاسبه حقوق را نشان می دهد. با توجه به فلوچارت ابتدا حقوق ثابت کارمند دریافت می شود. حق بیمه آن محاسبه و سپس حقوق با عدد ده میلیون ریال مقایسه می شود. چنانچه حقوق بیش از ده میلیون ریال باشد آن گاه مقدار مالیات محاسبه و بر روی صفحه نشان داده می شود. در غیر این صورت مالیات صفر در نظر گرفته می شود. با کمی دقت به قسمت شرط این فلوچارت متوجه می شوید که در صورت برقراری شرط دو دستور باید اجرا شود. در حالی که در مثال های قبلی تنها یک دستور اجرا می شد. برای مشخص کردن این دو دستور در برنامه باید آنها را در بین عالمت های آکوالد باز و بسته قرار دهیم. با این کار یک بالک 1 می سازیم. } { بالکی شامل دو دستور دستور محاسبه مالیات دستور نمایش مقدار مالیات 121 B ock 1

126 نکته بالک چیست به تعدادی دستور که داخل عالمت های آکوالد باز و بسته قرار داشته باشند بالک گفته می شود. { ; دستور ; دستور ; دستور } بالک می تواند خالی باشد یعنی بین عالمت های آکوالد هیچ دستوری وجود نداشته باشد. بالک می تواند فقط شامل یک دستور باشد. برای خوانا و واضح شدن یک بالک دستورهای داخل بالک را با تورفتگی می نویسیم تا به راحتی در برنامه مشخص شوند. فلوچارت 7 6 محاسبه حقوق دریافتی کارمندان یک شرکت 122

127 class Salary { static void Main() { long income, tax, insurance,net; string input; Console.Write (''Enter income:''); input Console.ReadLine(); income long.parse(input); ; 0.07 insurance income if (income > ) { ; ) tax (income Console.WriteLine(''Tax '' tax); } else tax 0; Console.WriteLine(''Insurance '' insurance); net income insurance tax; Console.WriteLine(''Net '' net); } } Console.WriteLine(''Press any key to continue...''); Console.ReadKey(); برنامه 4 6 محاسبه حقوق خالص کارمندان یک شرکت )مثال ٧ ٦ ( سؤال: در مثال 7 6 برای محاسبه مالیات ابتدا تفاوت حقوق با ده میلیون ریال محاسبه شده و سپس در پنج درصد ضرب شده است. به این روش محاسبه مالیات مازاد گفته می شود. به نظر شما چرا مستقیما حقوق در پنج درصد ضرب نمی شود 123

128 1 5 6 عملگرهای منطقی عملگر منطقی&& یک عملگر دوتایی و دارای دو عملوند است. در هنگام اجرای آن ابتدا نتیجه عملوند سمت چپ به وسیله کامپیوتر محاسبه و درستی یا نادرستی آن مشخص میشود.اگر ارزش عملوند سمت چپ false باشد نتیجه عملگر&& نیز false خواهد بود. اما اگر نتیجه عملوند سمت چپ true باشد آنگاه عملوند سمت راست محاسبه میشود که بر اساس ارزش آن نتیجه عملگر&& طبق جدول 2 6 مشخص میشود. جدول 2 6 نتیجه عملگر&& نتیجه عملگر && false false false true ارزش عملوند سمت راست false true false true ارزش عملوند سمت چپ false false true true مثال 8 6 : فرض کنید نمره درسی یک دانش آموز در متغیر mark قرار دارد. با بررسی قبولی یا مردودی پیام مناسب چاپ کنید. الگوریتم یا روش انجام کار: در این مثال دو محدوده از اعداد باید بررسی شود.بنابراین به دو دستور if نیاز داریم که در صورت درست بودن عبارت منطقی مربوط به هر یک از آنها پیامی بر روی صفحه نمایش داده شود.برای این مثال از فلوچارت استفاده نمی کنیم و به جای آن مستقیما دستورها را می نویسیم. شکل زیر ساختار دستورها را نشان می دهد. عبارت های داخل پرانتز به زبان فارسی است که باید به زبان #C نوشته شوند: (نمره کمتر از ده) if مردود // Console.WriteLine(''Failed''); (نمره از ده تا بیست) if قبول // Console.WriteLine(''Passed''); Log ca operator 1 124

129 عبارت )نمره کمتر از ده( در زبان # C به صورت عبارت منطقی) 10 < )mark نوشته می شود در این عبارت ساده در صورتی که نمره) mark ( عددی کمتر از ده مثال 8 باشد نتیجه عبارت true است و در نتیجه دستور() WriteLine اجرا شده و پیام»Failed«را نمایش می دهد. if (mark < 10) Console.WriteLine(''Failed''); اما عبارت )نمره از ده تا بیست( به سادگی عبارت قبلی در زبان #C نوشته نمی شود بلکه این عبارت را باید با ترکیب دو عبارت»نمره بزرگتر یا مساوی 10«و همچنین»نمره کوچکتر یا مساوی 20«بسازید. (mark > 10( و )mark < 20( بین دو عبارت»و«قرار دارد که برای ترکیب دو عبارت منطقی استفاده می شود به طوریکه هر گاه نتیجه هر دو عبارت true باشد نتیجه کل عبارت نیز درست است ولی اگر نتیجه حداقل یکی از عبارت ها false باشد نتیجه کل عبارت نیز نادرست است.»و«در واقع یک عملگر منطقی است. بنابراین ترکیب دو عبارت قبلی با استفاده از عملگر&& به صورت زیر است: (mark > 10) && (mark < 20( در این عبارت مرکب به ازای mark 14 نتیجه هر دو عبارت سمت چپ و راست برابر true است. بنابراین نتیجه کل عبارت نیز true است. اما به ازای mark 9 نتیجه عبارت (mark > 10)false است بنابراین نتیجه کل عبارت نیز false خواهد بود. حال دستور if مربوط به وضعیت قبولی دانش آموز چنین خواهد بود: if ((mark > 10) && (mark < 20)) Console.WriteLine(''Passed''); دستورهای کامل به صورت زیر است: if (mark < 10) Console.WriteLine(''Failed''); if ((mark > 10) && (mark < 20)) Console.WriteLine(''Passed''); عالوه بر عملگر&& عملگرهای دیگری نیز در زبان #C برای ایجاد عبارت های مرکب وجود دارد که عالمت و عملکرد آنها به ترتیب اولویت در جدول 3 6 نشان داده شده است. 125

130 جدول 3 6 عملگرهای منطقی اولویت نام عملگر عالمت عملکرد نقیض! ارزش عملوند را معکوس می کند 1 و تنها در صورتی که هر دو عملوندtrue باشند نتیجه این عملگر نیز true خواهد بود در غیر این صورت false است && 2 یا اگر حداقل یکی از عملوندها true باشند نتیجه این عملگر نیز true خواهد بود 3 1 یا انحصاری ^ اگر ارزش عملوندها مخالف یکدیگر باشد نتیجه این عملگرtrue خواهد بود 4 جدول 4 6 حالت های مختلف در عملگرهای منطقی نتیجه عملگر ^ نتیجه عملگر ارزش عبارت سمت راست ارزش عبارت سمت چپ false false false false false true true true true false true true true true true false کار در کارگاه 3 مثال 9 6 : میخواهیم برنامهای بنویسیم که عددی را دریافت کند و تشخیص دهد که مضرب پنج است یا خیر. الگوریتم یا روش کار: برای تشخیص اعدادی که مضرب پنج هستند از دو روش میتوان استفاده میشود. یک روش بررسی بخش پذیری بر پنج است مانند روشی که برای تشخیص اعداد زوج در مثال 5 6 استفاده کردیم. روش دیگر بررسی رقم یکان عدد است که در این مثال میخواهیم از آن استفاده کنیم. در این روش رقم یکان عدد را جدا میکنیم. اگر رقم یکان برابر پنج یا برابر صفر بود آن گاه عدد مضرب پنج است. به عبارت مرکب در دستور if توجه کنید که از عملگر استفاده شده است. (XOR) Exc us ve or 1 126

131 class CheckNumbers { static void Main() { string input; int number; Console.Write(''Enter a number:''); input Console.ReadLine(); number int.parse(input); intfirstdigit number % 10 ; if ((firstdigit 0) (firstdigit 5)) Console.WriteLine(''The number is a multiple of 5.''); } } Console.WriteLine(''Press any key to continue...''); Console.ReadKey(); برنامه 5 6 برنامه تشخیص عدد مضرب پنج )مثال ٩ ٦ ( سؤال: خروجی برنامه به ازای اعداد ورودی 90 و 37 چیست چه پیامیروی صفحه ظاهر میشود سؤال: چه دستورهایی به برنامه اضافه میکنید تا به ازای اعداد ورودی غیر مضرب 5 مانند 37 خروجی برنامه واضح باشد مثال 10 6 : میخواهیم مثال 3 6 را تکمیل کنیم به صورتی که شخص خاصی بتواند از آن استفاده نماید. بنابراین با اجرای برنامه باید نام کاربری و کلمه رمز دریافت شده و درستی ورودیها در برنامه بررسی شود. 127

132 الگوریتم یا روش کار:در این مثال ابتدا نام کاربری و کلمه عبور را از کاربر دریافت کرده و آنها را در دو متغیر ذخیره می کنیم. سپس محتوای متغیرها را با نام کاربری و کلمه عبور از قبل تعریف شده مقایسه می نماییم. اگر اطالعات وارد شده صحیح بود پیام خوشامد گویی نمایش داده می شود. در غیر این صورت برنامه پیام می دهد که اطالعات وارد شده صحیح نیست )فلوچارت 8 6 (. نام کاربری را دریافت کن username کلمه عبور را دریافت کن password fa se username = admin && password= admin123 اعالم کن نام کاربر یا رمز عبور غیر مجاز است true اعالم کن ''welcome'' فلوچارت 8 6 دریافت نام کاربری و کلمه عبور در فلوچارت 8 6 فرض شده است که کاربر مجاز دارای نام کاربری»admin«و کلمه عبور»admin123«است.برای بررسی اطالعات وارد شده از یک عبارت منطقی مرکب در دستور else if استفاده می کنیم. برنامه شماره 6 6 بر اساس این فلوچارت نوشته شده است: 128

133 class Login { static void Main() { string username, password; Console Write( Enter username: ); username = Console ReadLine(); Console Write( Enter password: ); password = Console ReadLine(); if ((username == admin ) && (password == admin123 )) Console WriteLine( Welcome Admin ); else Console WriteLine( Invalid username or password! ); Console WriteLine( Press any key to continue ); Console ReadKey(); } } برنامه 6 6 دریافت نام کاربری و کلمه عبور کاربر )مثال 10 6 ( مثال 11 6 : میخواهیم برنامهای بنویسیم که با توجه به عدد دریافتی از کاربر نام یکی از فصلهای سال را نمایش دهد )1: بهار 2: تابستان...( الگوریتم و روش انجام کار: ابتدا عدد دریافتی را در متغیر number قرارمیدهیم. سپس با مقایسه عدد دریافتی با شمارههای 1 تا 4 نام فصل مربوطه را نمایش میدهیم. 129

134 ٦ ٦ ساختار if_else پیچیده در این ساختار در صورتی که عبارت منطقی ١ درست )true( نباشد عبارت منطقی ٢ بررسی می شود و در صورتی که هیچ یک از عبارات منطقی ٢ ١ و ٣ )درست( true نباشد دستورات شماره ٤ انجام می شود. )عبارت منطقی ١ ( if { ; دستورات شماره ١ } )عبارت منطقی ٢ ( else if { ; دستورات شماره ٢ } )عبارت منطقی ٣ ( else if { ; دستورات شماره 3 } else { ; دستورات شماره 4 } در مثال ١١ ٦ چنین ساختاری مورد استفاده قرار می گیرد. 130

135 class CheckSeason { static void Main(string[] args) { string input; int number; Console Write(''Enter a number:''); input = Console ReadLine(); number = int Parse(input); if (number == 1) Console WriteLine(''Spring''); else if (number == 2) Console WriteLine(''Summer''); else if (number == 3) Console WriteLine(''Fall''); else if (number == 4) Console WriteLine(''Winter''); else Console WriteLine(''Invalid Number! ''); } } Console WriteLine(''Press any key to continue ''); Console ReadKey(); برنامه 6 6 دریافت شماره فصل و نمایش نام فصل )مثال 11 6 ( 131

136 7 6 دستور switch در مواردی که بخواهیم حالت های مختلف یک عبارت را بررسی و بر اساس آن دستورهایی را اجرا کنیم از دستور switch استفاده می کنیم. ساختار کلی این دستور را می بینید. )عبارت( switch { :مقدار 1 case ;دستور 1 break; مقدار 2 : case ;دستور 2 break;.. default: ;دستورهای دیگر break; } ساختار کلی دستور switch در جلوی کلمه رزرو شده switch عبارتی در داخل پرانتز نوشته می شود که بر اساس حاصل آن تصمیم گیری و اجرای دستورها کنترل می شود. مقادیری که حاصل عبارت با آن ها مقایسه می شود هر یک در جلوی کلمه رزرو شده case نوشته می شود. اگر حاصل عبارت با یک مقدار case برابر باشد آن گاه دستور یا دستورهای جلوی case تا رسیدن به کلمه رزرو شده break اجرا می شود. اگر حاصل عبارت با هیچ کدام از مقادیر case برابر نشد آن گاه دستورهای قسمت default اجرا می شوند. آکوالد های باز و بسته محدوده عملیات شروع و پایان دستور switch را معین می کند. نوع عبارتی که داخل پرانتز دستور switch نوشته می شود نمی تواند اعشاری باشد. اما عبارت های حرفی رشته ای و انواع داده صحیح می تواند استفاده شود. 132

137 مثال 12 6 : اکنون میخواهیم مثال 11 6 را با استفاده از دستور switch بازنویسی نماییم. class CheckSeason { static void Main() { string input; Console.Write(''Enter a number:''); input Console.ReadLine(); switch (input) { case ''1'': Console.WriteLine(''Spring''); break; case ''2'': Console.WriteLine(''Summer''); break; case ''3'': Console.WriteLine(''Fall''); break; case ''4'': Console.WriteLine(''Winter''); break; default: Console.WriteLine(''Invalid Number!''); break; } Console.WriteLine(''Press any key to continue...''); Console.ReadKey(); } } 133 برنامه 7 6 دریافت شماره فصل و نمایش نام فصل )مثال ١٢ ٦ (

138 کار در کارگاه 4 1 مثال 13 6 : در این جا می خواهیم مثال 2 6 را توسعه دهیم. تشخیص سه کاربر مختلف با دریافت نام کاربری و کلمه عبور انجام شود. در این برنامه نام کاربری با دستور switch و کلمه عبور با دستور if بررسی شده است. class SwitchDemo { static void Main(string[] args) { string username, password; Console.Write(''Enter username:''); username Console.ReadLine(); Console.Write(''Enter password:''); password Console.ReadLine(); switch (username) { case''admin'': if (password ''admin123'') Console.WriteLine(''Welcome Manager.''); else Console.WriteLine(''Wrong password!''); break; case''accountant'': if (password ''acc123'') Console.WriteLine(''Welcome accountant.''); else Console.WriteLine(''Wrong password!''); 134

139 } } break; case''sales'': if (password ''sales123'') Console.WriteLine(''Welcome Manager!''); else Console.WriteLine(''Wrong password!''); break; default: Console.WriteLine(''Invalid username!''); break; } Console.WriteLine(''Press any key to continue...''); Console.ReadKey(); برنامه 7 6 دریافت نام کاربری و رمز عبور کاربران )مثال 13 ٦ ( اگر به ساختار دستور switch توجه کنید پس از هر دستور case یک دستور break نوشته شده است. از کلمه رزرو شده break برای خاتمه دادن به یک case استفاده می شود. اگر دستور case نوشته نشود مترجم برای جلوگیری از اشتباه برنامه نویس خطا می دهد 1.برای هر break می توان بیش از یک دستور نوشت و نیازی به بالک ندارد. 2 مثال 14 6 : با استفاده از قطعه برنامه زیر متن کامل برنامه را در محیط VS بنویسید. در این قطعه برنامه از کاربر سؤالی پرسیده می شود کاربر در پاسخ به سؤال کلمه ای را وارد می کند. اگر کاربر کلمه Yes و یا کلمه maybe را وارد نماید هر دو یک نتیجه را خواهد داشت و پیام Great! بر روی صفحه نشان داده می شود. 1 در زبان C یا C میتوانید دستور break را ننویسید که در این صورت بعد از پایان اجرای دستورات یک case دستورات case بعدی نیز اجرا میشود. 135

140 Console.Write(''Do you enjoy C#? (yes/no/maybe):''); string input Console.ReadLine(); switch (input) { case''yes'': case''maybe'': Console.WriteLine(''Great!''); break; case''no'': Console.WriteLine(''Too bad!''); break; } قطعه برنامه 8 6 کاربرد دستور switch بدون break 3 برنامه ای بنویسید که یک عدد را بگیرد و زوج یا فرد بودن آن راتشخیص دهد. 4 برنامه ای بنویسید که نمره دانش آموز را دریافت کند و پیامی برای قبولی یا مردودی او صادر نماید. ٥ برنامه شماره 11 6 و 12 ٦ را نوشته و ترجمه کنید. به ازای ورودی های مختلف آن را اجرا کنید. 6 اگر کاربر در هنگام اجرای مثال 14 6 کلمه دیگری به غیر از کلمات تعیین شده بنویسد خروجی چه خواهد بود 7 می خواهیم اگر کاربر کلمه دیگری غیر از کلمات تعیین شده در مثال 13 6 را وارد کرد دستور زیر اجرا گردد چه تغییری در داخل دستور switch انجام می دهید Console.WriteLine(''I m sorry, I don t understand that!''); 136

141 خودآزمایی فصل ششم 1 دستورهای زیر برای کنترل محتوای number نوشته شده است. با تغییراتی در عبارت منطقی و دستور if همین کنترل را با استفاده از عملگر&& انجام دهید: if ((number > 10) (number < 0)) Console.WriteLine(''The number should between zero to ten.''); else Console.WriteLine(''Good job!''); 2 دستورهای شرطی مطابق با فلوچارت های زیر بنویسید: 137 if (number < 100) number ; else number 1; 3 بدون استفاده از دستور if دستور زیر را بنویسید.

142 4 درهریکازدستورهایزیر بااستفادهازعملگرهایمنطقی تعداددستورهایif راکاهشدهید. (الف if (score > 0) if (score < 100) Console.WriteLine(''Score '' score); (ب if (choice 1) Console.Clear(); if (choice 2) Console.Clear(); Console.WriteLine(''Stating...''); 5 اگر در متغیر char یک کاراکترقرار داشته باشد با استفاده از دستورهای شرطی معین کنید که در داخل متغیر چه نوع کاراکتری )حروف بزرگ حروف کوچک و یا ارقام( قرار دارد 6 در هر یک از دستورهای شرطی زیر دستور WriteLine() در چه صورت اجرا میشود (الف if (number > 0) if (number < 10) failed ; else Console.WriteLine(number); ب) if (number > 0) { if (number < 10) failed ; } else Console.WriteLine(number); 138

143 تمرینات برنامه نویسی فصل ششم 1 برنامه ای بنویسید که عددی را به عنوان شماره فصل از ورودی دریافت کند. نام ماه های آن فصل را در خروجی چاپ نماید. برای ورودی غیر مجاز پیام مناسب نشان داده شود. 2 برنامه ای بنویسید که سن کاربر را دریافت کند و تعداد روزهای عمر او را نشان دهد. عدد وارد شده توسط کاربر در برنامه کنترل شود. سن کاربر نمی تواند منفی و یا بزرگتر از عددی مانند 150 باشد. 3 برنامه ای بنویسید که عددی را از ورودی دریافت کند و تعیین کندکه این عدد مضرب 6 است یا خیر از روش بخش پذیری هم زمان بر 2 و 3 استفاده نمایید. 4 برنامه ای بنویسید که عددی را از ورودی دریافت کند و زوج بودن آن را تشخیص دهد. برای بخش پذیری عدد ورودی بر 2 از روش بررسی رقم یکان شامل ٢ 0 استفاده کنید. 5 برنامه ای بنویسید که یک عدد یک رقمی دریافت کند و کلمه متناظر با آن عدد را روی صفحه نمایش دهد مثال اگر عدد 5 از ورودی دریافت شد برنامه کلمه FIVE را نمایش دهد. این برنامه را برای عدد دو رقمی توسعه دهید. 6 برنامه ای بنویسید که میزان مصرف برق در یک ماه را بر حسب کیلو وات سؤال نماید و سپس بهای برق مصرفی یک ماه را بر اساس جدول زیر محاسبه کند و مبلغ آن را بر حسب ریال نمایش دهد. مثال اگر مصرف برق 180 کیلو وات در ماه باشد در این صورت 100 کیلو وات آن با مبلغ 1364 ریال محاسبه شده و 80 کیلو وات باقیمانده آن با مبلغ 1426 ریال محاسبه می شود: ) 1426 * 80 ) ) ( بهای برق مصرفی پلههای مصرف ٣٠ روزه )kwh( ١ تا مصرف 2 ١ تا مازاد بر 3 2 تا مازاد بر 4 3 تا مازاد بر 5 4 تا مازاد بر 6 5 تا مازاد بر 6 مازاد بر نرخ )ریال( برنامهای بنویسید که سه عدد از ورودی دریافت کند و عدد بزرگتر را تشخیص داده و آن را نمایش دهد. 139

144 8 برنامه ای بنویسید که شماره روز را دریافت و نام روز را چاپ کند. مثال اگر اولین روز سال جاری چهارشنبه بوده است با ورود عدد 1 چهارشنبه با ورود عدد 2 پنج شنبه و... چاپ شود. از دستور switch استفاده کنید. 9 برنامه ای بنویسید که دمای هوا را از ورودی دریافت نماید. بر طبق جدول زیر پیام مناسب را چاپ نماید. ورودی > دما 1 دما > 2 دما > 1 3 دما > 2 < 3 دما خروجی بسیار سرد سرد معتدل گرم بسیارگرم 10 برنامه ای بنویسید که شماره رنگ را از ورودی دریافت نماید. طبق جدول زیر رنگ زمینه صفحه نمایش را به رنگ مربوطه تغییردهد. ورودی)شماره رنگ( رنگ صفحه نمایش مشکی آبی قرمز سبز 11 فرض کنید آزمونی دارای ٣٠ سؤال چهارگزینه ای باشد. برنامه ای بنویسید که تعداد پاسخ های درست و تعداد پاسخ های نادرست یک شرکت کننده در این آزمون را دریافت کرده نمره وی 1 3 نمره منفی دارد(. و درصد پاسخ گویی به سؤاالت را محاسبه نماید. )با این فرض که هر پاسخ غلط مثال اگر دانش آموز ١٧ پاسخ درست و ٦ پاسخ غلط داشته باشد نمره وی برابر ١٥ می باشد )از ٣٠ نمره( و درصد پاسخ گویی وی برابر %50 است. ١٢ آیا برنامه تمرین ١١ کنترلی بر روی صح ت داده های ورودی برنامه دارد مثال کنترل می کند که مجموع تعداد پاسخ های صحیح و غلط کمتر یا مساوی تعداد کل سؤاالت آزمون باشد 13 با تکمیل تمرین ١١ از بروز چنین خطاهایی در ورودی جلوگیری کنید. 140

145 فصل هفتم دستورات تکرار )حلقه ها( در بعضی از برنامه های کاربردی باید یک عمل چندین بار تکرار شود. مثال اگر بخواهیم میانگین یا معدل نمرات درس زبان انگلیسی یک کالس را محاسبه کنیم باید نمرات تمام دانش آموزان کالس را از ورودی دریافت کرده و با یکدیگر جمع کنیم. در این مثال عمل دریافت نمره از ورودی و عمل جمع زدن نمره ها به تعداد دانش آموزان کالس باید تکرار گردد. نوشتن چنین برنامه هایی با دستورات تکراری خسته کننده و طوالنی و گاهی غیر ممکن خواهد بود. در زبان های برنامه نویسی از جمله زبان #C دستورات ایجاد حلقه برای کوتاه کردن تعداد دستورات برنامه پیش بینی شده اند. به وسیله این دستورات برنامه نویس می تواند عملیات و پردازش های تکرار شونده را فقط یک بار بنویسد و کامپیوتر آنها را به دفعات تکرار کند. در این فصل با انواع دستورات حلقه و کاربرد آنها آشنا می شویم. پس از پایان این فصل انتظار می رود که فراگیر بتواند: 1 کاربرد حلقه در برنامه را توضیح دهد. 2 دستورات ایجاد حلقه را نام ببرد و تفاوت هر یک را بیان کند. 3 عملکرد و کاربرد دستور حلقه while را توضیح دهد. 4 عملکرد و کاربرد دستور حلقه for را توضیح دهد. 5 برنامه های کاربردی با حلقه تکرار بنویسد. 1 7 دستورات تکرار شرطی فرض کنید می خواهیم برنامه ای بنویسیم که فقط افراد خاصی مجاز به استفاده از آن باشند. بدین منظور در ابتدای برنامه نام کاربری و کلمه عبور را سؤال می کنیم. اگر کاربر توانست اطالعات خواسته شده را به طور صحیح وارد کند به قسمت های بعدی برنامه هدایت می شود و در غیر این صورت مجددا نام کاربری و کلمه عبور درخواست می شود. 141

146 در چنین برنامه هایی عمل دریافت اطالعات ممکن است تکرار گردد. تکرار دستورات یک برنامه بسته به نوع الگوریتم آن می تواند با دفعات معین و یا نامعین باشد. زمانی که تعداد دفعات نامشخص است توقف و یا تکرار بستگی به برقراری یک شرط دارد. در این گونه موارد از دستورات حلقه شرطی مانند while یا whiledo استفاده می کنیم. اگر تعداد دفعات تکرار مشخص باشد مثال حداکثر 3 بار نام کاربری و کلمه عبور دریافت گردد از دستور حلقه معین for استفاده می شود دستور حلقه شرطی :while ساختار کلی دستور while در زیر نشان داده شده است: (عبارت منطقی) while ; دستور 142 دستور while از سه بخش تشکیل شده است: 1 کلمه رزرو شده while 2 عبارت منطقی در داخل پرانتز 3 دستوری که در صورت درست بودن نتیجه عبارت اجرا خواهد شد. مثال 1 7 : نمونهای از بهکار گیری دستور while چنین است: int x 1; while (x < 100) Console.WriteLine(''x '' x ); قطعه برنامه 1 7 مثالی از یک حلقه سؤال: به نظر شما خروجی این دستورات چیست )چه اعدادی روی صفحه نمایش نشان داده میشود ( نکته به عالمت نقطه ویرگول در دستور while توجه کنید. بعد از عالمت پرانتز عالمت نقطه ویرگول نگذارید زیرا دستور while هنوز تمام نشده است. عالمت نقطه ویرگول باید در انتهای دستور نوشته شود. نقطه ویرگول ندارد (عبارت منطقی) while ; دستور

147 عبارت منطقی )بررسی عبارت( false حلقه true دستور فلوچارت 1 7 دستور while هنگامی که کامپیوتر در حال اجرای برنامه است با رسیدن به دستور while ابتدا مقدار عبارت را بررسی می کند. در صورتی که مقدار عبارت true باشد دستور )یا بالک( نوشته شده بعد از while اجرا می شود. پس از آن دوباره مقدار عبارت محاسبه می شود و تا زمانی که ارزش آن true باشد دستورمذکور اجرا خواهد شد. در این حالت می گوییم حلقه 1 ایجاد شده است )فلوچارت 1 ٧ (. دستور یا دستوراتی که مکرر اجرا می گردند در بدنه حلقه 2 قرار دارد. اگر در ارزیابی عبارت مقدار false حاصل شود دستورات بدنه حلقه دیگر اجرا نخواهند شد.برنامه از حلقه خارج می شود و دستورات بعدی اجرا می شوند. نکته اگر بخواهید بیش از یک دستور تکرار گردد باید آنها را به صورت یک بالک بنویسید. یعنی آنها را در داخل عالمت های آکوالد باز و بسته قرار دهید. کار در کارگاه ١ 1 مثال ١ ٧ را به صورت یک برنامه کامل در VS تایپ و اجرا نمایید. ٢ اعداد حلقه را طوری تغییر دهید تا خروجی اعداد دو رقمی شود. ٣ اعداد حلقه را طوری تغییر دهید تا خروجی اعداد سه رقمی و به صورت نزولی شود. 143 Loop ١ Loop Body 2

148 مثال 2 7 : می خواهیم برنامه ای بنویسیم که ارقام یک عدد را جدا نموده و آن ها را نمایش دهد. الگوریتم یا روش انجام کار: با توجه به آن که رقم یکان هر عدد باقیمانده تقسیم آن عدد صحیح بر 10 است کافی است عدد دریافتی را بر 10 تقسیم و باقیمانده آن را نمایش دهیم. به عنوان مثال اگر عدد دریافتی 576 باشد باقیمانده تقسیم آن بر عدد 10 عدد 6 است که رقم یکان عدد است اگر دوباره خارج قسمت بدست آمده یعنی 57 را بر عدد 10 تقسیم کنیم خواهیم داشت: اگر به باقیمانده تقسیم باال توجه کنید متوجه می شوید که عدد 7 رقم ده گان عدد دریافتی است. به همین ترتیب ادامه می دهیم و عمل تقسیم را تکرار کرده و باقیمانده تقسیم را به دست می آوریم باقیمانده تقسیم باال را در نظر بگیرید. در اینجا توانستیم آخرین رقم عدد یعنی 5 را نیز جدا کنیم. با دقت در عملیات فوق متوجه می شویم که عمل تقسیم عملی تکراری است و تا زمانی انجام می شود که مقسوم آن بزرگتر از صفر باشد )فلوچارت ٢ ٧ (. دریافت عدد از کاربر number digit number>0 number%10 مقدار digit را اعالم کن number number/10 حلقه فلوچارت 2 7 جدا کردن ارقام عدد 144

149 مطابق با فلوچارت شکل 2 7 برنامه را مینویسیم: class Numbers { static void Main() { int number, digit ; string input; Console.Write( Enter a number: ); input Console.ReadLine(); number int.parse(input); while (number > 0) { digit number % 10; Console.WriteLine(digit); number / 10; } Console.WriteLine( Press any key to continue ); Console.ReadKey(); } } برنامه 2 7 جدا کردن ارقام یک عدد صحیح سؤال: در برنامه 2 7 یک بالک شامل سه دستور در داخل حلقه قرار دارد که تکرار میشود. آن بالک و دستورهای داخل آن را مشخص کنید. سؤال: برنامه را برای عدد ٣٨٥ در جدول Trace کنید. خروجی input number digit

150 سؤال: آیا ممکن است که دستورات داخل حلقه اصال اجرا نشوند به ازای چه مقادیری این اتفاق میافتد مثال 3 7 : میخواهیم برنامهای بنویسیم که نام کاربری و رمز عبور را سؤال نماید و اگر کاربر اطالعات خواسته شده را به درستی وارد نکرد دوباره سؤال شود. الگوریتم یا روش انجام کار: در فصل ششم در مثال 10 6 با روش دریافت و بررسی نام کاربری و کلمه عبور آشنا شدید. در این مثال از حلقه برای تکرار عملیات استفاده میکنیم. در صورتی که کاربر اطالعات را بهطور صحیح وارد نکرد باید دوباره عمل دریافت و بررسی اطالعات تکرار شود. فلوچارت 3 7 حلقه و عملیات تکراری را نشان میدهد. نام کاربری را دریافت کن username کلمه عبور را دریافت کن password حلقه username= "admin" AND password= "admin123" true اعالم کن نام کاربری یا کلمه عبور اشتباه است false اعالم کن خوش آمدید فلوچارت 3 7 دریافت نام کاربری و کلمه عبور با حلقه 146

151 اگر فلوچارت 3 7 را با دقت بررسی کنید متوجه می شوید که در این مثال ابتدا دستورات داخل حلقه اجرا می شوند و سپس شرط ادامه تکرار بررسی می شود. در حالی که در مثال قبلی ابتدا شرط بررسی می شد و سپس در صورت برقراری شرط دستورات داخل حلقه اجرا می شد. در زبان برنامه نویسی #C دستور حلقه whiledo برای این گونه مسایل در نظر گرفته شده است که در این قسمت به شرح آن می پردازیم دستور حلقه شرطی whiledo : شکل کلی دستور whiledo به صورت زیر است: do ;دستور ; (عبارت منطقی ( while دستور whiledo از چهار بخش تشکیل شده است: 1 کلمه رزرو شده do 2 دستور داخل حلقه 3 کلمه رزرو شده while 4 عبارت منطقی داخل پرانتز که در صورت درست بودن آن دستور داخل حلقه تکرار می شود. مثال 4 7 : نمونه ای از به کارگیری دستور whiledo چنین است: int x 1; do Console.WriteLine(''x '' x ); while (x < 100); قطعه برنامه 3 7 مثالی از یک حلقه سؤال: به نظر شما خروجی این دستورات چیست )چه اعدادی روی صفحه نمایش نشان داده میشود ( نکته اگر بخواهید بیش از یک دستور در حلقه قرار گیرد باید آنها را در یک بالک قرار دهید. 147

152 به محل نوشتن عالمت ; در دستور whiledo توجه کنید. این عالمت بعد از عبارت منطقی باید نوشته شود. کامپیوتر با رسیدن به دستور whiledo ابتدا دستور داخل حلقه را اجرا می کند که از کلمه do شروع می شود و سپس با رسیدن به کلمه while مقدار عبارت منطقی را ارزیابی می نماید. اگر حاصل عبارت true باشد آنگاه به قسمت do برمی گردد و دستور بدنه حلقه اجرا می شود. تا زمانی که حاصل عبارت true است حلقه تکرار می شود. اگر حاصل ارزیابی عبارت false شود دیگر به کلمه do برنمی گردد و کنترل برنامه به خط بعد از while واگذار شده و دستورات دیگر برنامه اجرا می شوند. فلوچارت 4 7 دستور whiledo را نشان می دهد. دستور حلقه true عبارت منطقی )مقایسه و بررسی داده( false فلوچارت 4 7 دستور whiledo کار در کارگاه 2 برنامه مربوط به فلوچارت 3 7 )دریافت نام کاربری و کلمه عبور( را با استفاده از حلقه whiledo بنویسید. 148

153 class LoginLoop { static void Main(string[] args) { string username, password; bool loginflag; do { Console.Write(''Enter username: ''); username Console.ReadLine(); Console.Write(''Enter password: ''); password Console.ReadLine(); if ((username ''admin'') && (password ''admin123'')) loginflag true; else { loginflag false; Console.WriteLine(''Wrong username or password!. Try again.''); } } while (!loginflag); Console.WriteLine(''Welcome Admin.''); Console.WriteLine(''Press any key to continue...''); Console.ReadKey(); } } برنامه 4 7 دریافت نام کاربری و رمز عبور در داخل حلقه حلقه whiledo 149

154 در برنامه 4 7 بیش از یک دستور در داخل حلقه قرار دارد بنابراین ازعالمتهای آکوالد باز و بسته برای ایجاد یک بالک استفاده شده است که بین کلمات do و while قرار دارند. در داخل بالک ابتدا نام کاربری و کلمه عبور دریافت شده است و سپس درستی آنها توسط دستور if بررسی شده است. برای کنترل حلقه )یا شرط تکرار حلقه( از یک متغیر منطقی به نام loginflag استفاده شده است. اگر کاربر اطالعات نام کاربری و کلمه عبور را صحیح وارد کند در این متغیر مقدار true قرار میگیرد. اما اگر کاربر اطالعات نادرست وارد کند در این متغیر مقدار false قرار میگیرد. به عبارت منطقی کنترل حلقه که پس از کلمه while نوشته شده است دقت کنید: } while (!loginflag); در عبارت منطقی از عملگر نقیض استفاده شده است. بنابراین تا زمانی که مقدار متغیر loginflag برابر false است حلقه تکرار میگردد. هر گاه کاربر اطالعات صحیح را وارد کند در متغیر loginflag مقدار true قرار گرفته و در نتیجه حاصل عبارت منطقی false شده و حلقه دیگر تکرار نمیشود. در نتیجه دستور بعد از While اجرا میشود که نمایش یک پیام خوشامد گویی است. Console.WriteLine(''Welcome Admin.''); سؤال: چرا در قسمت else از عالمتهای آکوالد باز و بسته استفاده شده است اما در قسمت if چنین نیست مثال 7 7 : می خواهیم یک بازی حدس عدد ایجاد کنیم. این بازی بین دو بازیکن به شرح زیر صورت می گیرد. بازیکن اول عددی را برای خود در نظر می گیرد و بازیکن دوم باید آن عدد را حدس بزند. بازیکن اول در طول بازی راهنمایی الزم را در اختیار بازیکن دوم قرار می دهد تا عدد باالتر یا پایین تری را حدس بزند. الگوریتم یا روش انجام کار: با توجه به شرح بازی ابتدا عدد مورد نظر بازیکن اول را سؤال کرده و در یک متغیر )number( ذخیره می کنیم. سپس از بازیکن دوم می خواهیم تا عددی که بازیکن اول وارد کرده است را حدس بزند. عدد دریافتی از بازیکن دوم )guess( باید با عدد مورد نظر بازیکن اول مقایسه شود که در این صورت سه حالت رخ می دهد: 150

روش محاسبه ی توان منابع جریان و منابع ولتاژ

روش محاسبه ی توان منابع جریان و منابع ولتاژ روش محاسبه ی توان منابع جریان و منابع ولتاژ ابتدا شرح کامل محاسبه ی توان منابع جریان: برای محاسبه ی توان منابع جریان نخست باید ولتاژ این عناصر را بدست آوریم و سپس با استفاده از رابطه ی p = v. i توان این

Διαβάστε περισσότερα

محاسبه ی برآیند بردارها به روش تحلیلی

محاسبه ی برآیند بردارها به روش تحلیلی محاسبه ی برآیند بردارها به روش تحلیلی برای محاسبه ی برآیند بردارها به روش تحلیلی باید توانایی تجزیه ی یک بردار در دو راستا ( محور x ها و محور y ها ) را داشته باشیم. به بردارهای تجزیه شده در راستای محور

Διαβάστε περισσότερα

مفاهیم ولتاژ افت ولتاژ و اختالف پتانسیل

مفاهیم ولتاژ افت ولتاژ و اختالف پتانسیل مفاهیم ولتاژ افت ولتاژ و اختالف پتانسیل شما باید بعد از مطالعه ی این جزوه با مفاهیم ولتاژ افت ولتاژ و اختالف پتانسیل کامال آشنا شوید. VA R VB به نظر شما افت ولتاژ مقاومت R چیست جواب: به مقدار عددی V A

Διαβάστε περισσότερα

تحلیل مدار به روش جریان حلقه

تحلیل مدار به روش جریان حلقه تحلیل مدار به روش جریان حلقه برای حل مدار به روش جریان حلقه باید مراحل زیر را طی کنیم: مرحله ی 1: مدار را تا حد امکان ساده می کنیم)مراقب باشید شاخه هایی را که ترکیب می کنید مورد سوال مسئله نباشد که در

Διαβάστε περισσότερα

آزمایش 8: تقویت کننده عملیاتی 2

آزمایش 8: تقویت کننده عملیاتی 2 آزمایش 8: تقویت کننده عملیاتی 2 1-8 -مقدمه 1 تقویت کننده عملیاتی (OpAmp) داراي دو یا چند طبقه تقویت کننده تفاضلی است که خروجی- هاي هر طبقه به وروديهاي طبقه دیگر متصل شده است. در انتهاي این تقویت کننده

Διαβάστε περισσότερα

تصاویر استریوگرافی.

تصاویر استریوگرافی. هب انم خدا تصاویر استریوگرافی تصویر استریوگرافی یک روش ترسیمی است که به وسیله آن ارتباط زاویه ای بین جهات و صفحات بلوری یک کریستال را در یک فضای دو بعدی )صفحه کاغذ( تعیین میکنند. کاربردها بررسی ناهمسانگردی

Διαβάστε περισσότερα

1) { } 6) {, } {{, }} 2) {{ }} 7 ) { } 3) { } { } 8) { } 4) {{, }} 9) { } { }

1) { } 6) {, } {{, }} 2) {{ }} 7 ) { } 3) { } { } 8) { } 4) {{, }} 9) { } { } هرگاه دسته اي از اشیاء حروف و اعداد و... که کاملا"مشخص هستند با هم در نظر گرفته شوند یک مجموعه را به وجود می آورند. عناصر تشکیل دهنده ي یک مجموعه باید دو شرط اساسی را داشته باشند. نام گذاري مجموعه : الف

Διαβάστε περισσότερα

مدار معادل تونن و نورتن

مدار معادل تونن و نورتن مدار معادل تونن و نورتن در تمامی دستگاه های صوتی و تصویری اگرچه قطعات الکتریکی زیادی استفاده می شود ( مانند مقاومت سلف خازن دیود ترانزیستور IC ترانس و دهها قطعه ی دیگر...( اما هدف از طراحی چنین مداراتی

Διαβάστε περισσότερα

فعالیت = ) ( )10 6 ( 8 = )-4( 3 * )-5( 3 = ) ( ) ( )-36( = m n m+ m n. m m m. m n mn

فعالیت = ) ( )10 6 ( 8 = )-4( 3 * )-5( 3 = ) ( ) ( )-36( = m n m+ m n. m m m. m n mn درس»ریشه ام و توان گویا«تاکنون با مفهوم توان های صحیح اعداد و چگونگی کاربرد آنها در ریشه گیری دوم و سوم اعداد آشنا شده اید. فعالیت زیر به شما کمک می کند تا ضمن مرور آنچه تاکنون در خصوص اعداد توان دار و

Διαβάστε περισσότερα

جلسه ی ۲۴: ماشین تورینگ

جلسه ی ۲۴: ماشین تورینگ دانشکده ی علوم ریاضی نظریه ی زبان ها و اتوماتا ۲۶ ا ذرماه ۱۳۹۱ جلسه ی ۲۴: ماشین تورینگ مدر س: دکتر شهرام خزاي ی نگارندگان: حمید ملک و امین خسر وشاهی ۱ ماشین تور ینگ تعریف ۱ (تعریف غیررسمی ماشین تورینگ)

Διαβάστε περισσότερα

آزمایش 1: پاسخ فرکانسی تقویتکننده امیتر مشترك

آزمایش 1: پاسخ فرکانسی تقویتکننده امیتر مشترك آزمایش : پاسخ فرکانسی تقویتکننده امیتر مشترك -- مقدمه هدف از این آزمایش بدست آوردن فرکانس قطع بالاي تقویتکننده امیتر مشترك بررسی عوامل تاثیرگذار و محدودکننده این پارامتر است. شکل - : مفهوم پهناي باند تقویت

Διαβάστε περισσότερα

آزمون مقایسه میانگین های دو جامعه )نمونه های بزرگ(

آزمون مقایسه میانگین های دو جامعه )نمونه های بزرگ( آزمون مقایسه میانگین های دو جامعه )نمونه های بزرگ( فرض کنید جمعیت یک دارای میانگین و انحراف معیار اندازه µ و انحراف معیار σ باشد و جمعیت 2 دارای میانگین µ2 σ2 باشند نمونه های تصادفی مستقل از این دو جامعه

Διαβάστε περισσότερα

مثال( مساله الپالس در ناحیه داده شده را حل کنید. u(x,0)=f(x) f(x) حل: به کمک جداسازی متغیرها: ثابت = k. u(x,y)=x(x)y(y) X"Y=-XY" X" X" kx = 0

مثال( مساله الپالس در ناحیه داده شده را حل کنید. u(x,0)=f(x) f(x) حل: به کمک جداسازی متغیرها: ثابت = k. u(x,y)=x(x)y(y) XY=-XY X X kx = 0 مثال( مساله الپالس در ناحیه داده شده را حل کنید. (,)=() > > < π () حل: به کمک جداسازی متغیرها: + = (,)=X()Y() X"Y=-XY" X" = Y" ثابت = k X Y X" kx = { Y" + ky = X() =, X(π) = X" kx = { X() = X(π) = معادله

Διαβάστε περισσότερα

فصل پنجم زبان های فارغ از متن

فصل پنجم زبان های فارغ از متن فصل پنجم زبان های فارغ از متن خانواده زبان های فارغ از متن: ( free )context تعریف: گرامر G=(V,T,,P) کلیه قوانین آن به فرم زیر باشد : یک گرامر فارغ از متن گفته می شود در صورتی که A x A Є V, x Є (V U T)*

Διαβάστε περισσότερα

جلسه ی ۱۰: الگوریتم مرتب سازی سریع

جلسه ی ۱۰: الگوریتم مرتب سازی سریع دانشکده ی علوم ریاضی داده ساختارها و الگوریتم ها ۸ مهر ۹ جلسه ی ۱۰: الگوریتم مرتب سازی سریع مدر س: دکتر شهرام خزاي ی نگارنده: محمد امین ادر یسی و سینا منصور لکورج ۱ شرح الگور یتم الگوریتم مرتب سازی سریع

Διαβάστε περισσότερα

سلسله مزاتب سبان مقدمه فصل : زبان های فارغ از متن زبان های منظم

سلسله مزاتب سبان مقدمه فصل : زبان های فارغ از متن زبان های منظم 1 ماشیه ای توریىگ مقدمه فصل : سلسله مزاتب سبان a n b n c n? ww? زبان های فارغ از متن n b n a ww زبان های منظم a * a*b* 2 زبان ها پذیرفته می شوند بوسیله ی : ماشین های تورینگ a n b n c n ww زبان های فارغ

Διαβάστε περισσότερα

فصل اول هدف های رفتاری: پس از پایان این فصل از هنرجو انتظار می رود: 5 روش های اجرای دستور را توضیح دهد. 6 نوارهای ابزار را توصیف کند.

فصل اول هدف های رفتاری: پس از پایان این فصل از هنرجو انتظار می رود: 5 روش های اجرای دستور را توضیح دهد. 6 نوارهای ابزار را توصیف کند. فصل اول آشنایی با نرم افزار اتوکد هدف های رفتاری: پس از پایان این فصل از هنرجو انتظار می رود: 1 قابلیت های نرم افزار اتوکد را بیان کند. 2 نرم افزار اتوکد 2010 را روی رایانه نصب کند. 3 محیط گرافیکی نرم

Διαβάστε περισσότερα

قرار می گیرند. همچنین برای نگهداری اطالعات و نمایش آنها بر روی صفحه نمایش از متغیرها

قرار می گیرند. همچنین برای نگهداری اطالعات و نمایش آنها بر روی صفحه نمایش از متغیرها فصل چهارم آشنایی با انواع داده ها و متغیرها برنامه هایی که تاکنون نوشته ایم به نشان دادن یک پیام یا حاصل یک عبارت بر روی صفحه نمایش محدود می شد اما در برنامه های کاربردی با داده ها و مقادیر مختلف سروکار

Διαβάστε περισσότερα

همبستگی و رگرسیون در این مبحث هدف بررسی وجود یک رابطه بین دو یا چند متغیر می باشد لذا هدف اصلی این است که آیا بین

همبستگی و رگرسیون در این مبحث هدف بررسی وجود یک رابطه بین دو یا چند متغیر می باشد لذا هدف اصلی این است که آیا بین همبستگی و رگرسیون در این مبحث هدف بررسی وجود یک رابطه بین دو یا چند متغیر می باشد لذا هدف اصلی این است که آیا بین دو صفت متغیر x و y رابطه و همبستگی وجود دارد یا خیر و آیا می توان یک مدل ریاضی و یک رابطه

Διαβάστε περισσότερα

دانشکده ی علوم ریاضی جلسه ی ۵: چند مثال

دانشکده ی علوم ریاضی جلسه ی ۵: چند مثال دانشکده ی علوم ریاضی احتمال و کاربردا ن ۴ اسفند ۹۲ جلسه ی : چند مثال مدر س: دکتر شهرام خزاي ی نگارنده: مهدی پاک طینت (تصحیح: قره داغی گیوه چی تفاق در این جلسه به بررسی و حل چند مثال از مطالب جلسات گذشته

Διαβάστε περισσότερα

بسم اهلل الرحمن الرحیم آزمایشگاه فیزیک )2( shimiomd

بسم اهلل الرحمن الرحیم آزمایشگاه فیزیک )2( shimiomd بسم اهلل الرحمن الرحیم آزمایشگاه فیزیک )( shimiomd خواندن مقاومت ها. بررسی قانون اهم برای مدارهای متوالی. 3. بررسی قانون اهم برای مدارهای موازی بدست آوردن مقاومت مجهول توسط پل وتسون 4. بدست آوردن مقاومت

Διαβάστε περισσότερα

ﯽﺳﻮﻃ ﺮﯿﺼﻧ ﻪﺟاﻮﺧ ﯽﺘﻌﻨﺻ هﺎﮕﺸﻧاد

ﯽﺳﻮﻃ ﺮﯿﺼﻧ ﻪﺟاﻮﺧ ﯽﺘﻌﻨﺻ هﺎﮕﺸﻧاد دانشگاه صنعتی خواجه نصیر طوسی دانشکده برق - گروه کنترل آزمایشگاه کنترل سیستمهای خطی گزارش کار نمونه تابستان 383 به نام خدا گزارش کار آزمایش اول عنوان آزمایش: آشنایی با نحوه پیاده سازی الکترونیکی فرایندها

Διαβάστε περισσότερα

سايت ويژه رياضيات درسنامه ها و جزوه هاي دروس رياضيات

سايت ويژه رياضيات   درسنامه ها و جزوه هاي دروس رياضيات سايت ويژه رياضيات درسنامه ها و جزوه هاي دروس رياضيات دانلود نمونه سوالات امتحانات رياضي نمونه سوالات و پاسخنامه كنكور دانلود نرم افزارهاي رياضيات و... کانال سایت ریاضی سرا در تلگرام: https://telegram.me/riazisara

Διαβάστε περισσότερα

تخمین با معیار مربع خطا: حالت صفر: X: مکان هواپیما بدون مشاهده X را تخمین بزنیم. بهترین تخمین مقداری است که متوسط مربع خطا مینیمم باشد:

تخمین با معیار مربع خطا: حالت صفر: X: مکان هواپیما بدون مشاهده X را تخمین بزنیم. بهترین تخمین مقداری است که متوسط مربع خطا مینیمم باشد: تخمین با معیار مربع خطا: هدف: با مشاهده X Y را حدس بزنیم. :y X: مکان هواپیما مثال: مشاهده نقطه ( مجموعه نقاط کنارهم ) روی رادار - فرض کنیم می دانیم توزیع احتمال X به چه صورت است. حالت صفر: بدون مشاهده

Διαβάστε περισσότερα

تمرین اول درس کامپایلر

تمرین اول درس کامپایلر 1 تمرین اول درس 1. در زبان مربوط به عبارت منظم زیر چند رشته یکتا وجود دارد (0+1+ϵ)(0+1+ϵ)(0+1+ϵ)(0+1+ϵ) جواب 11 رشته کنند abbbaacc را در نظر بگیرید. کدامیک از عبارتهای منظم زیر توکنهای ab bb a acc را ایجاد

Διαβάστε περισσότερα

تمرینات درس ریاض عموم ٢. r(t) = (a cos t, b sin t), ٠ t ٢π. cos ٢ t sin tdt = ka۴. x = ١ ka ۴. m ٣ = ٢a. κds باشد. حاصل x٢

تمرینات درس ریاض عموم ٢. r(t) = (a cos t, b sin t), ٠ t ٢π. cos ٢ t sin tdt = ka۴. x = ١ ka ۴. m ٣ = ٢a. κds باشد. حاصل x٢ دانش اه صنعت شریف دانش ده ی علوم ریاض تمرینات درس ریاض عموم سری دهم. ١ سیم نازک داریم که روی دایره ی a + y x و در ربع اول نقطه ی,a را به نقطه ی a, وصل م کند. اگر چ ال سیم در نقطه ی y,x برابر kxy باشد جرم

Διαβάστε περισσότερα

فصل چهارم : مولتی ویبراتورهای ترانزیستوری مقدمه: فیدبک مثبت

فصل چهارم : مولتی ویبراتورهای ترانزیستوری مقدمه: فیدبک مثبت فصل چهارم : مولتی ویبراتورهای ترانزیستوری مقدمه: فیدبک مثبت در تقویت کننده ها از فیدبک منفی استفاده می نمودیم تا بهره خیلی باال نرفته و سیستم پایدار بماند ولی در فیدبک مثبت هدف فقط باال بردن بهره است در

Διαβάστε περισσότερα

http://econometrics.blog.ir/ متغيرهای وابسته نماد متغيرهای وابسته مدت زمان وصول حساب های دريافتني rcp چرخه تبدیل وجه نقد ccc متغیرهای کنترلی نماد متغيرهای کنترلي رشد فروش اندازه شرکت عملکرد شرکت GROW SIZE

Διαβάστε περισσότερα

مسائل. 2 = (20)2 (1.96) 2 (5) 2 = 61.5 بنابراین اندازه ی نمونه الزم باید حداقل 62=n باشد.

مسائل. 2 = (20)2 (1.96) 2 (5) 2 = 61.5 بنابراین اندازه ی نمونه الزم باید حداقل 62=n باشد. ) مسائل مدیریت کارخانه پوشاک تصمیم دارد مطالعه ای به منظور تعیین میانگین پیشرفت کارگران کارخانه انجام دهد. اگر او در این مطالعه دقت برآورد را 5 نمره در نظر بگیرد و فرض کند مقدار انحراف معیار پیشرفت کاری

Διαβάστε περισσότερα

جلسه 3 ابتدا نکته اي در مورد عمل توابع بر روي ماتریس ها گفته می شود و در ادامه ي این جلسه اصول مکانیک کوانتمی بیان. d 1. i=0. i=0. λ 2 i v i v i.

جلسه 3 ابتدا نکته اي در مورد عمل توابع بر روي ماتریس ها گفته می شود و در ادامه ي این جلسه اصول مکانیک کوانتمی بیان. d 1. i=0. i=0. λ 2 i v i v i. محاسبات کوانتمی (671) ترم بهار 1390-1391 مدرس: سلمان ابوالفتح بیگی نویسنده: محمد جواد داوري جلسه 3 می شود. ابتدا نکته اي در مورد عمل توابع بر روي ماتریس ها گفته می شود و در ادامه ي این جلسه اصول مکانیک

Διαβάστε περισσότερα

جزوه کارگاه برنامه نویسی

جزوه کارگاه برنامه نویسی جزوه کارگاه برنامه نویسی شامل: توضیح و حل برخی تمرینات آخر فصل کتاب الگوریتم و فلوچارت ایرج صادقی visual گریزی به نرم افزار stadio 2012 تهیه و تنظیم : محمد ربانی 1) مقدمه ای بر نحوه برنامه نویسی: دیدگاه

Διαβάστε περισσότερα

ویرایشسال 95 شیمیمعدنی تقارن رضافالحتی

ویرایشسال 95 شیمیمعدنی تقارن رضافالحتی ویرایشسال 95 شیمیمعدنی تقارن رضافالحتی از ابتدای مبحث تقارن تا ابتدای مبحث جداول کاراکتر مربوط به کنکور ارشد می باشد افرادی که این قسمت ها را تسلط دارند می توانند از ابتدای مبحث جداول کاراکتر به مطالعه

Διαβάστε περισσότερα

رشتۀ کامپیوتر گروه تحصیلی کامپیوتر

رشتۀ کامپیوتر گروه تحصیلی کامپیوتر برنامه سازی 2 رشتۀ کامپیوتر گروه تحصیلی کامپیوتر زمىنۀ خدمات شاخۀ آموزش فنى وحرفهاى عنوان و نام پدیدآور مشخصات نشر مشخصات ظاهری شابک وضعیت فهرست نویسی شناسه افزوده شناسه افزوده شماره کتاب شناسی ملی برنامه

Διαβάστε περισσότερα

قاعده زنجیره ای برای مشتقات جزي ی (حالت اول) :

قاعده زنجیره ای برای مشتقات جزي ی (حالت اول) : ۱ گرادیان تابع (y :f(x, اگر f یک تابع دومتغیره باشد ا نگاه گرادیان f برداری است که به صورت زیر تعریف می شود f(x, y) = D ۱ f(x, y), D ۲ f(x, y) اگر رویه S نمایش تابع (y Z = f(x, باشد ا نگاه f در هر نقطه

Διαβάστε περισσότερα

جلسه ی ۵: حل روابط بازگشتی

جلسه ی ۵: حل روابط بازگشتی دانشکده ی علوم ریاضی ساختمان داده ها ۶ مهر ۲ جلسه ی ۵: حل روابط بازگشتی مدر س: دکتر شهرام خزاي ی نگارنده: ا رمیتا ثابتی اشرف و علی رضا علی ا بادیان ۱ مقدمه پیدا کردن کران مجانبی توابع معمولا با پیچیدگی

Διαβάστε περισσότερα

جلسه 12 به صورت دنباله اي از,0 1 نمایش داده شده اند در حین محاسبه ممکن است با خطا مواجه شده و یکی از بیت هاي آن. p 1

جلسه 12 به صورت دنباله اي از,0 1 نمایش داده شده اند در حین محاسبه ممکن است با خطا مواجه شده و یکی از بیت هاي آن. p 1 محاسبات کوانتمی (67) ترم بهار 390-39 مدرس: سلمان ابوالفتح بیگی نویسنده: سلمان ابوالفتح بیگی جلسه ذخیره پردازش و انتقال اطلاعات در دنیاي واقعی همواره در حضور خطا انجام می شود. مثلا اطلاعات کلاسیکی که به

Διαβάστε περισσότερα

ندرک درگ ندرک درگ شور

ندرک درگ ندرک درگ شور ٥ عددهای تقریبی درس او ل: تقریب زدن گردکردن در کالس چهارم شما با تقریب زدن آشنا شده اید. عددهای زیر را با تقریب دهگان به نزدیک ترین عدد مانند نمونه تقریب بزنید. عدد جواب را در خانه مربوطه بنویسید. 780

Διαβάστε περισσότερα

چکیده مقدمه کلید واژه ها:

چکیده مقدمه کلید واژه ها: چکیده طی دهه های گذشته سازمان های بسیاری در اقسا نقاط جهان سیستم برنامه ریزی منابع سازمانی ERP را اتخاذ کرده اند. در باره ی منافع حسابداری اتخاذ سیستم های سازمانی تحقیقات کمی در مقیاس جهانی انجام شده است.

Διαβάστε περισσότερα

جلسه ی ۴: تحلیل مجانبی الگوریتم ها

جلسه ی ۴: تحلیل مجانبی الگوریتم ها دانشکده ی علوم ریاضی ساختمان داده ها ۲ مهر ۱۳۹۲ جلسه ی ۴: تحلیل مجانبی الگوریتم ها مدر س: دکتر شهرام خزاي ی نگارنده: شراره عز ت نژاد ا رمیتا ثابتی اشرف ۱ مقدمه الگوریتم ابزاری است که از ا ن برای حل مسا

Διαβάστε περισσότερα

هو الحق دانشکده ي مهندسی کامپیوتر جلسه هفتم

هو الحق دانشکده ي مهندسی کامپیوتر جلسه هفتم هو الحق دانشکده ي مهندسی کامپیوتر کدگذاري شبکه Coding) (Network شنبه 2 اسفند 1393 جلسه هفتم استاد: مهدي جعفري نگارنده: سید محمدرضا تاجزاد تعریف 1 بهینه سازي محدب : هدف پیدا کردن مقدار بهینه یک تابع ) min

Διαβάστε περισσότερα

جلسه ی ۳: نزدیک ترین زوج نقاط

جلسه ی ۳: نزدیک ترین زوج نقاط دانشکده ی علوم ریاضی ا نالیز الگوریتم ها ۴ بهمن ۱۳۹۱ جلسه ی ۳: نزدیک ترین زوج نقاط مدر س: دکتر شهرام خزاي ی نگارنده: امیر سیوانی اصل ۱ پیدا کردن نزدیک ترین زوج نقطه فرض می کنیم n نقطه داریم و می خواهیم

Διαβάστε περισσότερα

آموزش SPSS مقدماتی و پیشرفته مدیریت آمار و فناوری اطالعات -

آموزش SPSS مقدماتی و پیشرفته مدیریت آمار و فناوری اطالعات - آموزش SPSS مقدماتی و پیشرفته تهیه و تنظیم: فرزانه صانعی مدیریت آمار و فناوری اطالعات - مهرماه 96 بخش سوم: مراحل تحلیل آماری تحلیل داده ها به روش پارامتری بررسی نرمال بودن توزیع داده ها قضیه حد مرکزی جدول

Διαβάστε περισσότερα

جلسه 9 1 مدل جعبه-سیاه یا جستاري. 2 الگوریتم جستجوي Grover 1.2 مسا له 2.2 مقدمات محاسبات کوانتمی (22671) ترم بهار

جلسه 9 1 مدل جعبه-سیاه یا جستاري. 2 الگوریتم جستجوي Grover 1.2 مسا له 2.2 مقدمات محاسبات کوانتمی (22671) ترم بهار محاسبات کوانتمی (22671) ترم بهار 1390-1391 مدرس: سلمان ابوالفتح بیگی نویسنده: هیربد کمالی نیا جلسه 9 1 مدل جعبه-سیاه یا جستاري مدل هایی که در جلسه ي پیش براي استفاده از توابع در الگوریتم هاي کوانتمی بیان

Διαβάστε περισσότερα

فصل چهارم. کنیم و به این طریق برنامه خود را به راحتی و با قدرت بیشتر بنویسیم. کتابخانهFramework.NET ١ اجزای خط عنوان یک متد را توضیح دهد.

فصل چهارم. کنیم و به این طریق برنامه خود را به راحتی و با قدرت بیشتر بنویسیم. کتابخانهFramework.NET ١ اجزای خط عنوان یک متد را توضیح دهد. فصل چهارم کار با متدها و کالس های آماده تاکنون با تعدادی از متدها و کالس های سی شارپ کار کرده اید.این متدها و کالس ها از قبل آماده و درون ساختار سی شارپ تعبیه شده است که می توانیم از آنها در برنامه های

Διαβάστε περισσότερα

Spacecraft thermal control handbook. Space mission analysis and design. Cubesat, Thermal control system

Spacecraft thermal control handbook. Space mission analysis and design. Cubesat, Thermal control system سیستم زیر حرارتی ماهواره سرفصل های مهم 1- منابع مطالعاتی 2- مقدمه ای بر انتقال حرارت و مکانیزم های آن 3- موازنه انرژی 4 -سیستم های کنترل دما در فضا 5- مدل سازی عددی حرارتی ماهواره 6- تست های مورد نیاز

Διαβάστε περισσότερα

شاخصهای پراکندگی دامنهی تغییرات:

شاخصهای پراکندگی دامنهی تغییرات: شاخصهای پراکندگی شاخصهای پراکندگی بیانگر میزان پراکندگی دادههای آماری میباشند. مهمترین شاخصهای پراکندگی عبارتند از: دامنهی تغییرات واریانس انحراف معیار و ضریب تغییرات. دامنهی تغییرات: اختالف بزرگترین و

Διαβάστε περισσότερα

هد ف های هفته ششم: 1- اجسام متحرک و ساکن را از هم تشخیص دهد. 2- اندازه مسافت و جا به جایی اجسام متحرک را محاسبه و آن ها را مقایسه کند 3- تندی متوسط

هد ف های هفته ششم: 1- اجسام متحرک و ساکن را از هم تشخیص دهد. 2- اندازه مسافت و جا به جایی اجسام متحرک را محاسبه و آن ها را مقایسه کند 3- تندی متوسط هد ف های هفته ششم: 1- اجسام متحرک و ساکن را از هم تشخیص دهد. - اندازه مسافت و جا به جایی اجسام متحرک را محاسبه و آن ها را مقایسه کند 3- تندی متوسط اجسام متحرک را محاسبه کند. 4- تندی متوسط و لحظه ای را

Διαβάστε περισσότερα

تئوری جامع ماشین بخش سوم جهت سادگی بحث یک ماشین سنکرون دو قطبی از نوع قطب برجسته مطالعه میشود.

تئوری جامع ماشین بخش سوم جهت سادگی بحث یک ماشین سنکرون دو قطبی از نوع قطب برجسته مطالعه میشود. مفاهیم اصلی جهت آنالیز ماشین های الکتریکی سه فاز محاسبه اندوکتانس سیمپیچیها و معادالت ولتاژ ماشین الف ) ماشین سنکرون جهت سادگی بحث یک ماشین سنکرون دو قطبی از نوع قطب برجسته مطالعه میشود. در حال حاضر از

Διαβάστε περισσότερα

باشند و c عددی ثابت باشد آنگاه تابع های زیر نیز در a پیوسته اند. به شرطی که g(a) 0 f g

باشند و c عددی ثابت باشد آنگاه تابع های زیر نیز در a پیوسته اند. به شرطی که g(a) 0 f g تعریف : 3 فرض کنیم D دامنه تابع f زیر مجموعه ای از R باشد a D تابع f:d R در نقطه a پیوسته است هرگاه به ازای هر دنباله از نقاط D مانند { n a{ که به a همگراست دنبال ه ){ n }f(a به f(a) همگرا باشد. محتوی

Διαβάστε περισσότερα

شبکه های عصبی در کنترل

شبکه های عصبی در کنترل شبکه های عصبی در کنترل دانشگاه نجف آباد درس: کنترل هوشمند در فضای سایبرنتیک مدرس: حمید محمودیان مدل ریاضی نرون مدل ریاضی یک نرون ساده به صورت روبرو است P: مقدار کمیت ورودی b: مقدار بایاس )عرض از مبدا تابع

Διαβάστε περισσότερα

Angle Resolved Photoemission Spectroscopy (ARPES)

Angle Resolved Photoemission Spectroscopy (ARPES) Angle Resolved Photoemission Spectroscopy (ARPES) روش ARPES روشی است تجربی که برای تعیین ساختار الکترونی مواد به کار می رود. این روش بر پایه اثر فوتوالکتریک است که توسط هرتز کشف شد: الکترونها می توانند

Διαβάστε περισσότερα

Beta Coefficient نویسنده : محمد حق وردی

Beta Coefficient نویسنده : محمد حق وردی مفهوم ضریب سهام بتای Beta Coefficient نویسنده : محمد حق وردی مقدمه : شاید بارها در مقاالت یا گروهای های اجتماعی مربوط به بازار سرمایه نام ضریب بتا رو دیده باشیم یا جایی شنیده باشیم اما برایمان مبهم باشد

Διαβάστε περισσότερα

فصل دهم: همبستگی و رگرسیون

فصل دهم: همبستگی و رگرسیون فصل دهم: همبستگی و رگرسیون مطالب این فصل: )r ( کوواریانس ضریب همبستگی رگرسیون ضریب تعیین یا ضریب تشخیص خطای معیار برآور ( )S XY انواع ضرایب همبستگی برای بررسی رابطه بین متغیرهای کمی و کیفی 8 در بسیاری

Διαβάστε περισσότερα

هدف از این آزمایش آشنایی با رفتار فرکانسی مدارهاي مرتبه اول نحوه تأثیر مقادیر عناصر در این رفتار مشاهده پاسخ دامنه

هدف از این آزمایش آشنایی با رفتار فرکانسی مدارهاي مرتبه اول نحوه تأثیر مقادیر عناصر در این رفتار مشاهده پاسخ دامنه آزما ی ش شش م: پا س خ فرکا نس ی مدا رات مرتبه اول هدف از این آزمایش آشنایی با رفتار فرکانسی مدارهاي مرتبه اول نحوه تأثیر مقادیر عناصر در این رفتار مشاهده پاسخ دامنه و پاسخ فاز بررسی رفتار فیلتري آنها بدست

Διαβάστε περισσότερα

جلسه 14 را نیز تعریف کرد. عملگري که به دنبال آن هستیم باید ماتریس چگالی مربوط به یک توزیع را به ماتریس چگالی مربوط به توزیع حاشیه اي آن ببرد.

جلسه 14 را نیز تعریف کرد. عملگري که به دنبال آن هستیم باید ماتریس چگالی مربوط به یک توزیع را به ماتریس چگالی مربوط به توزیع حاشیه اي آن ببرد. تي وري اطلاعات کوانتمی ترم پاییز 39-39 مدرس: ابوالفتح بیگی و امین زاده گوهري نویسنده: کامران کیخسروي جلسه فرض کنید حالت سیستم ترکیبی AB را داشته باشیم. حالت سیستم B به تنهایی چیست در ابتداي درس که حالات

Διαβάστε περισσότερα

فصل ششم: ترکیبات درس اول: شمارش اصل جمع و اصل ضرب فعالیت قیمه هویج سیب پرتقال قورمه «سورۀ نحل»

فصل ششم: ترکیبات درس اول: شمارش اصل جمع و اصل ضرب فعالیت قیمه هویج سیب پرتقال قورمه «سورۀ نحل» کد 11 فصل 6 فصل ششم: ترکیبات و إ ن ت ع د وا ن ع م ة الل ه ل ت ح صو ه ا و اگر بخواهید نمی توانید نعمت های خدا را بشمارید. «سورۀ نحل» درس اول: شمارش شاید شمارش درنظر برخی یک مهارت با اهمیت ریاضی نباشد و

Διαβάστε περισσότερα

راهنمای کاربری موتور بنزینی )سیکل اتو(

راهنمای کاربری موتور بنزینی )سیکل اتو( راهنمای کاربری موتور بنزینی )سیکل اتو( هدف آزمایش : شناخت و بررسی عملکرد موتور بنزینی تئوری آزمایش: موتورهای احتراق داخلی امروزه به طور وسیع برای ایجاد قدرت بکار می روند. ژنراتورهای کوچک پمپ های مخلوط

Διαβάστε περισσότερα

فصل چهارم تعیین موقعیت و امتدادهای مبنا

فصل چهارم تعیین موقعیت و امتدادهای مبنا فصل چهارم تعیین موقعیت و امتدادهای مبنا هدف های رفتاری پس از آموزش و مطالعه این فصل از فراگیرنده انتظار می رود بتواند: 1 راهکار کلی مربوط به ترسیم یک امتداد در یک سیستم مختصات دو بعدی و اندازه گیری ژیزمان

Διαβάστε περισσότερα

هندسه تحلیلی بردارها در فضای R

هندسه تحلیلی بردارها در فضای R هندسه تحلیلی بردارها در فضای R فصل اول-بردارها دستگاه مختصات سه بعدی از سه محور ozوoyوox عمود بر هم تشکیل شده که در نقطه ای به نام o یکدیگر را قطع می کنند. قرارداد: دستگاه مختصات سه بعدی راستگرد می باشد

Διαβάστε περισσότερα

دبیرستان غیر دولتی موحد

دبیرستان غیر دولتی موحد دبیرستان غیر دلتی محد هندسه تحلیلی فصل دم معادله های خط صفحه ابتدا باید بدانیم که از یک نقطه به مازات یک بردار تنها یک خط می گذرد. با تجه به این مطلب برای نشتن معادله یک خط احتیاج به داشتن یک نقطه از خط

Διαβάστε περισσότερα

تلفات خط انتقال ابررسی یک شبکة قدرت با 2 به شبکة شکل زیر توجه کنید. ژنراتور فرضیات شبکه: میباشد. تلفات خط انتقال با مربع توان انتقالی متناسب

تلفات خط انتقال ابررسی یک شبکة قدرت با 2 به شبکة شکل زیر توجه کنید. ژنراتور فرضیات شبکه: میباشد. تلفات خط انتقال با مربع توان انتقالی متناسب تلفات خط انتقال ابررسی یک شبکة قدرت با 2 به شبکة شکل زیر توجه کنید. ژنراتور فرضیات شبکه: این شبکه دارای دو واحد کامال یکسان آنها 400 MW میباشد. است تلفات خط انتقال با مربع توان انتقالی متناسب و حداکثر

Διαβάστε περισσότερα

معادلهی مشخصه(کمکی) آن است. در اینجا سه وضعیت متفاوت برای ریشههای معادله مشخصه رخ میدهد:

معادلهی مشخصه(کمکی) آن است. در اینجا سه وضعیت متفاوت برای ریشههای معادله مشخصه رخ میدهد: شکل کلی معادلات همگن خطی مرتبه دوم با ضرایب ثابت = ٠ cy ay + by + و معادله درجه دوم = ٠ c + br + ar را معادلهی مشخصه(کمکی) آن است. در اینجا سه وضعیت متفاوت برای ریشههای معادله مشخصه رخ میدهد: c ١ e r١x

Διαβάστε περισσότερα

:موس لصف یسدنه یاه لکش رد یلوط طباور

:موس لصف یسدنه یاه لکش رد یلوط طباور فصل سوم: 3 روابط طولی درشکلهای هندسی درس او ل قضیۀ سینوس ها یادآوری منظور از روابط طولی رابطه هایی هستند که در مورد اندازه های پاره خط ها و زاویه ها در شکل های مختلف بحث می کنند. در سال گذشته روابط طولی

Διαβάστε περισσότερα

فصل ترکیبیات درس اول شمارش درس دوم جایگشت درس سوم ترکیب

فصل ترکیبیات درس اول شمارش درس دوم جایگشت درس سوم ترکیب ترکیبیات 6 فصل و إ ن ت ع د وا ن ع م ة الل ه ل ت ح صو ه ا»سورۀ ابراهیم آیۀ 4«و اگر بخواهید نمی توانید نعمت های خدا را بشمارید. درس اول شمارش درس دوم جایگشت درس سوم ترکیب داشتن حداقل چند رنگ کافی است تا

Διαβάστε περισσότερα

پنج ره: Command History

پنج ره: Command History هب انم زیدان اپک فهرست مطا ل ب مع ر ف ی رنم ازفار م تل ب:... 11 آش نا ی ی با محی ط ا صل ی رنم ازفار م تل ب:... 11 11... پنج ره: Command History وه ارجای د ست ورات رد م تل ب:... 11 نح نو شت ن د ست ورات

Διαβάστε περισσότερα

فهرست مطالب جزوه ی فصل اول مدارهای الکتریکی مفاهیم ولتاژ افت ولتاژ و اختالف پتانسیل تحلیل مدار به روش جریان حلقه... 22

فهرست مطالب جزوه ی فصل اول مدارهای الکتریکی مفاهیم ولتاژ افت ولتاژ و اختالف پتانسیل تحلیل مدار به روش جریان حلقه... 22 فهرست مطالب جزوه ی فصل اول مدارهای الکتریکی آنچه باید پیش از شروع کتاب مدار بدانید تا مدار را آسان بیاموزید.............................. 2 مفاهیم ولتاژ افت ولتاژ و اختالف پتانسیل................................................

Διαβάστε περισσότερα

1 دایره فصل او ل کاربردهای بسیاری داشته است. یک قضیۀ بنیادی در هندسه موسوم با محیط ثابت دایره دارای بیشترین مساحت است. این موضوع در طراحی

1 دایره فصل او ل کاربردهای بسیاری داشته است. یک قضیۀ بنیادی در هندسه موسوم با محیط ثابت دایره دارای بیشترین مساحت است. این موضوع در طراحی فصل او ل 1 دایره هندسه در ساخت استحکامات دفاعی قلعهها و برج و باروها از دیرباز کاربردهای بسیاری داشته است. یک قضیۀ بنیادی در هندسه موسوم به»قضیۀ همپیرامونی«میگوید در بین همۀ شکلهای هندسی بسته با محیط ثابت

Διαβάστε περισσότερα

نظریه زبان ها و ماشین ها

نظریه زبان ها و ماشین ها نظریه زبان ها و ماشین ها Theory of Languages & Automatas سید سجاد ائم ی زمستان 94 به نام خدا پیش گفتار جزوه پیش رو جهت استفاده دانشجویان عزیز در درس نظریه زبانها و ماشینها تهیه شده است. در این جزوه با

Διαβάστε περισσότερα

Top Down Parsing LL(1) Narges S. Bathaeian

Top Down Parsing LL(1) Narges S. Bathaeian طراحی کامپایلر Top Down Parsing LL1) تعریف top down parsing Parse tree را از ریشه به سمت برگها می سازد. دو نوع LL1), LLk) Recursive descent مثال G = {S},{, ) }, P, S) S S S ) S ε ))$ مثال S S ) S ε ))$

Διαβάστε περισσότερα

جلسه ی ۱۸: درهم سازی سرتاسری - درخت جست و جوی دودویی

جلسه ی ۱۸: درهم سازی سرتاسری - درخت جست و جوی دودویی دانشکده ی علوم ریاضی ساختمان داده ۱۰ ا ذر ۹۲ جلسه ی ۱۸: درهم سازی سرتاسری - درخت جست و جوی دودویی مدر س: دکتر شهرام خزاي ی نگارنده: معین زمانی و ا رمیتا اردشیری ۱ یادا وری همان طور که درجلسات پیش مطرح

Διαβάστε περισσότερα

مود لصف یسدنه یاه لیدبت

مود لصف یسدنه یاه لیدبت فصل دوم 2 تبدیلهای هندسی 1 درس او ل تبدیل های هندسی در بسیاری از مناظر زندگی روزمره نظیر طراحی پارچه نقش فرش کاشی کاری گچ بری و... شکل های مختلف طبق الگویی خاص تکرار می شوند. در این فصل وضعیت های مختلفی

Διαβάστε περισσότερα

جلسه 2 1 فضاي برداري محاسبات کوانتمی (22671) ترم بهار

جلسه 2 1 فضاي برداري محاسبات کوانتمی (22671) ترم بهار محاسبات کوانتمی (22671) ترم بهار 1390-1391 مدرس: سلمان ابوالفتح بیگی نویسنده: نادر قاسمی جلسه 2 در این درسنامه به مروري کلی از جبر خطی می پردازیم که هدف اصلی آن آشنایی با نماد گذاري دیراك 1 و مباحثی از

Διαβάστε περισσότερα

به نام خدا. الف( توضیح دهید چرا از این تکنیک استفاده میشود چرا تحلیل را روی کل سیگنال x[n] انجام نمیدهیم

به نام خدا. الف( توضیح دهید چرا از این تکنیک استفاده میشود چرا تحلیل را روی کل سیگنال x[n] انجام نمیدهیم پردازش گفتار به نام خدا نیمسال اول 59-59 دکتر صامتی تمرین سری سوم پیشبینی خطی و کدینگ شکلموج دانشکده مهندسی کامپیوتر زمان تحویل: 32 آبان 4259 تمرینهای تئوری: سوال 1. می دانیم که قبل از انجام تحلیل پیشبینی

Διαβάστε περισσότερα

فصل 5 :اصل گسترش و اعداد فازی

فصل 5 :اصل گسترش و اعداد فازی فصل 5 :اصل گسترش و اعداد فازی : 1-5 اصل گسترش در ریاضیات معمولی یکی از مهمترین ابزارها تابع می باشد.تابع یک نوع رابطه خاص می باشد رابطه ای که در نمایش زوج مرتبی عنصر اول تکراری نداشته باشد.معموال تابع

Διαβάστε περισσότερα

به نام خدا طراحی کامپایلرها

به نام خدا طراحی کامپایلرها به نام خدا طراحی کامپایلرها 40-414 2 دورنمای تحلیلگر لغوی تحلیلگر نحوی نشانه ها تحلیلگر لغوی برنامهی مبدأ نشانه ی بعدی جدول عالیم پرسش مهم: وظیفه ی هر جعبه چیست فعال بر تحلیلگر لغوی و تحلیلگر نحوی تمرکز

Διαβάστε περισσότερα

عنوان: رمزگذاري جستجوپذیر متقارن پویا

عنوان: رمزگذاري جستجوپذیر متقارن پویا دانشگاه صنعتی شریف دانشکده مهندسی برق گزارش درس ریاضیات رمزنگاري عنوان: رمزگذاري جستجوپذیر متقارن پویا استاد درس: مهندس نگارنده: ز 94 دي ماه 1394 1 5 نماد گذاري و تعریف مسي له 1 6 رمزگذاري جستجوپذیر متقارن

Διαβάστε περισσότερα

هر عملگرجبر رابطه ای روی يک يا دو رابطه به عنوان ورودی عمل کرده و يک رابطه جديد را به عنوان نتيجه توليد می کنند.

هر عملگرجبر رابطه ای روی يک يا دو رابطه به عنوان ورودی عمل کرده و يک رابطه جديد را به عنوان نتيجه توليد می کنند. 8-1 جبررابطه ای يک زبان پرس و جو است که عمليات روی پايگاه داده را توسط نمادهايی به صورت فرمولی بيان می کند. election Projection Cartesian Product et Union et Difference Cartesian Product et Intersection

Διαβάστε περισσότερα

جلسه 16 نظریه اطلاعات کوانتمی 1 ترم پاییز

جلسه 16 نظریه اطلاعات کوانتمی 1 ترم پاییز نظریه اطلاعات کوانتمی ترم پاییز 39-39 مدرسین: ابوالفتح بیگی و امین زاده گوهري نویسنده: محم دحسن آرام جلسه 6 تا اینجا با دو دیدگاه مختلف و دو عامل اصلی براي تعریف و استفاده از ماتریس چگالی جهت معرفی حالت

Διαβάστε περισσότερα

3 لصف یربج یاه ترابع و ایوگ یاه ناوت

3 لصف یربج یاه ترابع و ایوگ یاه ناوت فصل توان های گویا و عبارت های جبری 8 نگاه کلی به فصل هدفهای این فصل را میتوان به اختصار چنین بیان کرد: همانگونه که توان اعداد را در آغاز برای توانهای طبیعی عددهای ٢ و ٣ تعریف میکنیم و سپس این مفهوم را

Διαβάστε περισσότερα

جلسه 2 جهت تعریف یک فضاي برداري نیازمند یک میدان 2 هستیم. یک میدان مجموعه اي از اعداد یا اسکالر ها به همراه اعمال

جلسه 2 جهت تعریف یک فضاي برداري نیازمند یک میدان 2 هستیم. یک میدان مجموعه اي از اعداد یا اسکالر ها به همراه اعمال نظریه اطلاعات کوانتمی 1 ترم پاییز 1391-1392 مدرسین: ابوالفتح بیگی و امین زاده گوهري جلسه 2 فراگیري نظریه ي اطلاعات کوانتمی نیازمند داشتن پیش زمینه در جبرخطی می باشد این نظریه ترکیب زیبایی از جبرخطی و نظریه

Διαβάστε περισσότερα

فصل چهارم : مولتی ویبراتورهای ترانزیستوری مقدمه: فیدبک مثبت

فصل چهارم : مولتی ویبراتورهای ترانزیستوری مقدمه: فیدبک مثبت جزوه تکنیک پالس فصل چهارم: مولتی ویبراتورهای ترانزیستوری فصل چهارم : مولتی ویبراتورهای ترانزیستوری مقدمه: فیدبک مثبت در تقویت کننده ها از فیدبک منفی استفاده می نمودیم تا بهره خیلی باال نرفته و سیستم پایدار

Διαβάστε περισσότερα

جلسه ی ۱۱: درخت دودویی هرم

جلسه ی ۱۱: درخت دودویی هرم دانشکده ی علوم ریاضی ساختمان داده ا بان جلسه ی : درخت دودویی هرم مدر س: دکتر شهرام خزاي ی نگارنده: احمدرضا رحیمی مقدمه الگوریتم مرتب سازی هرمی یکی دیگر از الگوریتم های مرتب سازی است که دارای برخی از بهترین

Διαβάστε περισσότερα

آزمایش ۱ اندازه گیری مقاومت سیم پیچ های ترانسفورماتور تک فاز

آزمایش ۱ اندازه گیری مقاومت سیم پیچ های ترانسفورماتور تک فاز گزارش آزمایشگاه ماشینهای الکتریکی ۲ آزمایش ۱ اندازه گیری مقاومت سیم پیچ های ترانسفورماتور تک فاز شرح آزمایش ماژول تغذیه را با قرار دادن Breaker Circuit بر روی on روشن کنید با تغییر دستگیره ماژول منبع تغذیه

Διαβάστε περισσότερα

یونیزاسیون اشعهX مقدار مو ثر یونی را = تعریف میکنیم و ظرفیت مو ثر یونی نسبت مقدار مو ثر یونی به زمان تابش هدف آزمایش: مقدمه:

یونیزاسیون اشعهX مقدار مو ثر یونی را = تعریف میکنیم و ظرفیت مو ثر یونی نسبت مقدار مو ثر یونی به زمان تابش هدف آزمایش: مقدمه: ر 1 یونیزاسیون اشعهX هدف آزمایش: تعیین مقدار ظرفیت مو ثر یونی هوا تحقیق بستگی جریان یونیزاسیون به جریان فیلامان و ولتاژ آند لامپ اشعه x مقدمه: اشعه x موج الکترومغناطیسی پر قدرت با محدوده انرژي چند تا چند

Διαβάστε περισσότερα

جلسه دوم سوم چهارم: مقدمه اي بر نظریه میدان

جلسه دوم سوم چهارم: مقدمه اي بر نظریه میدان هو الحق دانشکده ي مهندسی کامپیوتر کدگذاري شبکه Coding) (Network سه شنبه 21 اسفند 1393 جلسه دوم سوم چهارم: مقدمه اي بر نظریه میدان استاد: مهدي جعفري نگارنده: علیرضا حیدري خزاي ی در این نوشته مقدمه اي بر

Διαβάστε περισσότερα

فیلتر کالمن Kalman Filter

فیلتر کالمن Kalman Filter به نام خدا عنوان فیلتر کالمن Kalman Filter سیدمحمد حسینی SeyyedMohammad Hosseini Seyyedmohammad [@] iasbs.ac.ir تحصیالت تکمیلی علوم پایه زنجان Institute for Advanced Studies in Basic Sciences تابستان 95

Διαβάστε περισσότερα

فهرست جزوه ی فصل دوم مدارهای الکتریکی ( بردارها(

فهرست جزوه ی فصل دوم مدارهای الکتریکی ( بردارها( فهرست جزوه ی فصل دوم مدارهای الکتریکی ( بردارها( رفتار عناصر L, R وC در مدارات جریان متناوب......................................... بردار و کمیت برداری.............................................................

Διαβάστε περισσότερα

جلسه 15 1 اثر و اثر جزي ی نظریه ي اطلاعات کوانتومی 1 ترم پاي یز جدایی پذیر باشد یعنی:

جلسه 15 1 اثر و اثر جزي ی نظریه ي اطلاعات کوانتومی 1 ترم پاي یز جدایی پذیر باشد یعنی: نظریه ي اطلاعات کوانتومی 1 ترم پاي یز 1391-1391 مدرس: دکتر ابوالفتح بیگی ودکتر امین زاده گوهري نویسنده: محمدرضا صنم زاده جلسه 15 فرض کنیم ماتریس چگالی سیستم ترکیبی شامل زیر سیستم هايB و A را داشته باشیم.

Διαβάστε περισσότερα

4 آمار استنباطی 2 برآورد 1 فصل چهارم: آمار استنباطی

4 آمار استنباطی 2 برآورد 1 فصل چهارم: آمار استنباطی 4 آمار استنباطی 1 گردآوری داده ها برآورد 1 فصل چهارم: آمار استنباطی گردآوری داده ها 1 فعالیت می خواهیم برخی از ویژگی های مگس های سفید مزاحم در شهر تهران را بررسی کنیم. آیا برای انجام این کار می توانیم

Διαβάστε περισσότερα

اصول انتخاب موتور با مفاهیم بسیار ساده شروع و با نکات کاربردی به پایان می رسد که این خود به درک و همراهی خواننده کمک بسیاری می کند.

اصول انتخاب موتور با مفاهیم بسیار ساده شروع و با نکات کاربردی به پایان می رسد که این خود به درک و همراهی خواننده کمک بسیاری می کند. اصول انتخاب موتور اصول انتخاب موتور انتخاب یک موتور به در نظر گرفتن موارد بسیار زیادی از استانداردها عوامل محیطی و مشخصه های بار راندمان موتور و... وابسته است در این مقاله کوتاه به تاثیر و چرایی توان و

Διαβάστε περισσότερα

محاسبات کوانتمی 1 علم ساخت و استفاده از کامپیوتري است که بر پایه ي اصول مکانیک کوانتم قرار گرفته است.

محاسبات کوانتمی 1 علم ساخت و استفاده از کامپیوتري است که بر پایه ي اصول مکانیک کوانتم قرار گرفته است. محاسبات کوانتمی (22671) ترم بهار 1390-1391 مدرس: سلمان ابوالفتح بیگی نویسنده: سلمان ابوالفتح بیگی جلسه 1 محاسبات کوانتمی 1 علم ساخت و استفاده از کامپیوتري است که بر پایه ي اصول مکانیک کوانتم قرار گرفته

Διαβάστε περισσότερα

آموزش شناسایی خودهمبستگی در دادههای سری زمانی و نحوه رفع آن در نرم افزار EViews

آموزش شناسایی خودهمبستگی در دادههای سری زمانی و نحوه رفع آن در نرم افزار EViews بس م الله الر حم ن الر حی م آموزش شناسایی خودهمبستگی در دادههای سری زمانی و نحوه رفع آن در نرم افزار EViews Econometrics.blog.ir حسین خاندانی مدرس داده کاوی و اقتصادسنجی بس م الله الر حم ن الر حی م سخن

Διαβάστε περισσότερα

فصل سوم جریان های الکتریکی و مدارهای جریان مستقیم جریان الکتریکی

فصل سوم جریان های الکتریکی و مدارهای جریان مستقیم جریان الکتریکی فصل سوم جریان های الکتریکی و مدارهای جریان مستقیم جریان الکتریکی در رساناها مانند یک سیم مسی الکترون های آزاد وجود دارند که با سرعت های متفاوت بطور کاتوره ای)بی نظم(در حال حرکت هستند بطوریکه بار خالص گذرنده

Διαβάστε περισσότερα

مارکوف 1.مقدمه: سید مهدی صفوی محمد میکاییلی محمد پویان چکیده ما با مطالعه مدل مخفی میدان تصادفی مارکوف از الگوریتم EM

مارکوف 1.مقدمه: سید مهدی صفوی محمد میکاییلی محمد پویان چکیده ما با مطالعه مدل مخفی میدان تصادفی مارکوف از الگوریتم EM و بخش بندی تصاویر براساس مارکوف مدل میدان تصادفی مخفی 3 سید مهدی صفوی محمد میکاییلی محمد پویان -دانشجو گروه مهندسی پزشکی دانشکده فنی مهندسی دانشگاه شاهد 3- عضوهیات علمی دانشیار گروه مهندسی پزشکی دانشکده

Διαβάστε περισσότερα

آشنایی با پدیده ماره (moiré)

آشنایی با پدیده ماره (moiré) فلا) ب) آشنایی با پدیده ماره (moiré) توری جذبی- هرگاه روی ورقه شفافی چون طلق تعداد زیادی نوارهای خطی کدر هم پهنا به موازات یکدیگر و به فاصله های مساوی از هم رسم کنیم یک توری خطی جذبی به وجود می آید شکل

Διαβάστε περισσότερα

ثابت. Clausius - Clapeyran 1

ثابت. Clausius - Clapeyran 1 جدول 15 فشار بخار چند مایع خالص در دمای 25 C فشار بخار در دمایC (atm) 25 نام مایع 0/7 دیاتیل اتر 0/3 برم 0/08 اتانول 0/03 آب دمای جوش یک مایع برابر است با دمایی که فشار بخار تعادلی آن مایع با فشار اتمسفر

Διαβάστε περισσότερα

تحلیل الگوریتم پیدا کردن ماکزیمم

تحلیل الگوریتم پیدا کردن ماکزیمم تحلیل الگوریتم پیدا کردن ماکزیمم امید اعتصامی پژوهشگاه دانشهاي بنیادي پژوهشکده ریاضیات 1 انگیزه در تحلیل الگوریتم ها تحلیل احتمالاتی الگوریتم ها روشی براي تخمین پیچیدگی محاسباتی یک الگوریتم یا مساله ي

Διαβάστε περισσότερα

فصل سوم جبر بول هدف های رفتاری: در پایان این فصل از فراگیرنده انتظار می رود که :

فصل سوم جبر بول هدف های رفتاری: در پایان این فصل از فراگیرنده انتظار می رود که : فصل سوم جبر بول هدف کلی: شناخت جبر بول و اتحادهای اساسی آن توابع بولی به شکل مجموع حاصل ضرب ها و حاصل ضرب جمع ها پیاده سازی توابع منطقی توسط دروازه های منطقی پایه و نقشة کارنو هدف های رفتاری: در پایان

Διαβάστε περισσότερα

en fr fa ar صفحه نمایش و کلیدها 1 صفحه 1 نمايش ) صفحه 4( 1 میکروفون 12 برای استفاده از هندزفری LED

en fr fa ar صفحه نمایش و کلیدها 1 صفحه 1 نمايش ) صفحه 4( 1 میکروفون 12 برای استفاده از هندزفری LED گوشی در یک نگاه Gigaset DA6 2 3 4 5 6 7 8 9 2 کلیدهای تنظیم صدای گوشی بلندگو و صدای زنگ میکروفون 2 برای استفاده از هندزفری LED @ کلید هندزفری _ _هنگام درفت تماس چشمک می زند _ _در صورتی که تماس تلفنی به

Διαβάστε περισσότερα

Combined Test غربالگری پیش از تولد جهت شناسایی ناهنجاری های شایع مادرزادی سواالت و جوابهای مربوط به خانمهایی که میخواهند این آزمایش را انجام دهند.

Combined Test غربالگری پیش از تولد جهت شناسایی ناهنجاری های شایع مادرزادی سواالت و جوابهای مربوط به خانمهایی که میخواهند این آزمایش را انجام دهند. Combined Test غربالگری پیش از تولد جهت شناسایی ناهنجاری های شایع مادرزادی سواالت و جوابهای مربوط به خانمهایی که میخواهند این آزمایش را انجام دهند. غربالگری پیش از تولد جهت شناسایی ناهنجاری های شایع مادرزادی:

Διαβάστε περισσότερα